Skip to main content
Ctrl+K

šœ’ara

  • Overview

Documentation

  • Interpreters
    • Python
    • OpenSeesPy
    • Tcl
    • Parallel
  • Modeling
    • Model
    • Nodes
      • Node
      • fix
      • fixX
      • fixY
      • fixZ
      • setNodeCoord
      • setNodeDisp
      • setNodeVel
      • setNodeAccel
      • setNodePressure
    • Materials
      • Uniaxial
        • Elastic
        • Plastic
        • Bouc-Wen
        • Steel02
        • Concrete02
        • Concrete04
        • ASDConcrete1D
        • InitialStrain
        • InitialStress
      • Multiaxial
        • Elastic Isotropic
        • Elastic Orthotropic
        • PlasticJ2
        • Drucker Prager
        • Manzari Dafalias
        • FariaPlasticDamage
        • Bounding Cam Clay
        • Pressure Independent Multi Yield
        • Pressure Dependent Multi Yield
        • Pressure Dependent Multi Yield 02
      • Friction
        • Coulomb Friction
        • Multi-Linear Velocity Dependent Friction
        • Velocity Dependent Friction
        • Velocity and Normal Force Dependent Friction
        • Velocity and Pressure Dependent Friction
      • Wrappers
        • Series3D
        • Parallel3D
        • InitStrain
        • InitStress
        • Orthotropic
    • Section
      • Truss
      • Frame
        • Shapes
        • Elastic
        • UniaxialFiber
        • MultiaxialFiber
      • Plane
      • Shell
    • Element
      • Frame
        • ElasticFrame
        • ForceFrame
        • CosseratFrame
      • Truss
      • Plane
        • Q4-Q9
        • Q4/SSP
        • Q4/P0
        • Q4/E4
        • Triangle
      • Shells
        • ASDShellQ4
        • ASDShellT3
      • Solids
        • Brick
        • MixedBrick
        • SSPbrick
        • Tetrahedron
        • TenNodeTetrahedron
      • Joints
        • BeamColumnJoint
        • ElasticTubularJoint
        • Joint2D
        • Inno3DPnPJoint
        • LehighJoint2D
      • Other
        • ZeroLength
        • ZeroLength Section
        • ZeroLengthND Element
        • ZeroLengthContactASDimplex
        • BasicLink
        • FrameLink
        • ASDEmbeddedNode
        • ASDAbsorbingBoundary
        • RockingBC
        • PML Element
      • Fluid
        • FSIFluidBoundaryElement2D
        • FSIFluidElement2D
        • FSIInterfaceElement2D
      • Bearings
        • Elastomeric Bouc-Wen Bearing (AS2006)
        • Elastomeric Bearing (Plasticity, AS2006)
        • ElastomericX (MK2012)
        • Single Friction Pendulum Bearing (AS2006)
        • FPBearingPTV (MK2014)
        • TFP (Triple Friction Pendulum)
        • TripleFrictionPendulum
        • TripleFrictionPendulumX
        • FlatSliderBearing (AS2006)
        • RJ-Watson EQS Bearing (AS2013)
        • HDR
        • LeadRubberX (MK2012)
        • YamamotoBiaxialHDR
    • Transformations
      • Linear
      • PDelta
      • Corotational02
      • Spherical
      • Identity
    • Quadrature
      • Lobatto
      • Legendre
      • NewtonCotes
      • Radau
      • CompositeSimpson
      • UserDefined
      • FixedLocation
      • LowOrder
      • MidDistance
      • UserHinge
      • HingeMidpoint
      • HingeRadau
      • HingeRadauTwo
      • HingeEndpoint
    • Constraints
      • constrain
      • equalDOF
      • Diaphragm
      • Rigid Link
    • Damping
      • Rayleigh Damping
      • Modal Damping
    • Parameters
      • parameter
      • setParameter
      • addToParameter
      • updateParameter
      • getParamTags
      • getParamValue
    • Region
    • Remove
  • Meshing
    • Surface
    • block2D
    • block3D
    • Mesh
  • Loading
    • StaticPattern
      • NodalLoad
      • NodalValue
      • FrameLoad
    • AmbientAcceleration
    • Time Series
  • Analysis
    • Static Analysis
      • Proportional
      • DisplacementControl
      • Arc-Length Control
      • MinUnbalDispNorm
    • Transient Analysis
      • Newmark
      • Generalized Alpha
      • TRBDF2
    • Frequency Analysis
    • modalProperties
  • Output
    • Model
      • nodeCoord
      • nodeMass
      • getNodeTags
      • getFixedNodes
      • getConstrainedNodes
      • getNodePressure
      • getNumElements
      • eleNodes
      • getCrdTransfTags
      • getEleLoadTags
    • State
      • getTangent (printA)
      • getResidual
      • getTime
      • Recorders
        • Node Recorder
        • Envelope Node Recorder
        • PVD Recorder
        • MPCO Recorder
        • GMSH Recorder
      • nodeResponse
      • nodeAccel
      • nodeDisp
      • nodeVel
      • reactions
      • nodeRotation
      • nodeEigenvector
      • nodeUnbalance
      • ElementResponse
      • Element Recorder
      • eleResponse
  • Numerics
    • algorithm
      • Linear
      • Newton
      • Line Search
      • ModifiedNewton
      • Quasi Newton
      • Broyden/BFGS
      • ExpressNewton
    • system
      • BandGeneral
      • BandSPD
      • ProfileSPD
      • SuperLU
      • Umfpack
      • FullGeneral
      • SparseSYM
    • constraints
      • Plain Constraints
      • Penalty
      • Transformation
      • Lagrange
      • Auto Constraint Handler
    • numberer
      • Plain
      • RCM (Reverse Cuthill McKee)
      • AMD (Alternative Min Degree)
    • test
      • Residual
      • Displacement Increment
      • Energy Increment
      • Relative Norm Unbalance
      • RelativeNormDispIncr
      • Relative Energy Increment
      • Total Relative Norm Displacement Increment
      • Fixed Iterations
  • Utilities
    • Units
  • Gallery
    • Frames
      • Orienting Frames
      • Finite Rotations
      • Load factor control
      • Follower loading
      • Nonlinear Joint Offsets
      • Steel Shear Link
      • Steel Building
    • Material
      • Uniaxial Plasticity
      • Uniaxial Concrete
      • Bouc-Wen Material
      • Multiaxial Concrete
      • Multiaxial Plasticity
      • Orthotropic Wrapper
      • Damage Library
      • Parallel Multiaxial Material
      • Drucker-Prager Test
      • Concrete
    • Sections
      • Multiaxial Fibers
      • Uniaxial Fibers
      • Moment-Curvature
    • Plane Elasticity
      • Koyna Dam
      • Plasticity
    • Analysis
      • Nonlinear Static Analysis
      • Adaptive Transient Analysis
    • Miscellaneous
      • Rotated supports
      • OpenSeesPy

About

  • Guides
    • Install
    • Compile
    • Develop
    • Conventions
    • Guide to Docs
    • Transitioning
    • References
  • Features
    • Compatibility
    • Additions
    • Deprecations
    • Suspended
    • Dropped Capabilities
  • Licensing
  • Changelog
  • Cite
  • Gallery
  • Frames
  • Steel Shear Link

Steel Shear Link

Contents

  • Modeling
    • Material
    • Section
    • Model
  • Loading
  • Analysis
  • References

Steel Shear Link#

Download notebook

This example compares the shear response of the MultiaxialFiber section with the NDFiber section of OpenSees.

It is demonstrated that NDFiber produces a poorer representation of the link’s shear capacity.

Modeling#

import xara
import veux

import xara.units.iks as units
from xara.helpers import find_node

Material#

Begin by defining a xara.MultiaxialMaterial using the PlasticJ2 formulation.

Fy = 35.0*units.ksi
E  = 30e3*units.ksi
G  = 12e3*units.ksi

Aspect = 1.5

material = xara.MultiaxialMaterial(
    type="PlasticJ2",
    E =  E,
    G =  G,
    Fy = Fy,
    Hiso = 0.002*E,
    Hkin = 0.002*E
)

Section#

Next, a shape object is created using the from_aisc function.

This will be used to generate fibers with appropriate shear properties, like the shear correction factor \(\kappa\) used by NDFiber and the warping shapes \(\varphi\) used by MultiaxialFiber.

from xsection.library import from_aisc

shape = from_aisc("W18x40",
                units=units,
                mesh_scale=1,
                material=material,
                fillet=True,
                mesh_type="T3",
                mesher="gmsh")

veux.draw_shape(shape)

../../_images/c9314954c9277bf0359cea1b4767a6c3aa436be01bb86823cbcd8e84ad6f9d53.png

Finally, the xara.FrameSection objects are created with the two formulations of interest.

sections = [
    xara.FrameSection("NDFiber", shape),
    xara.FrameSection("MultiaxialFiber", shape)
]

veux.draw_shape(sections[1])

../../_images/c9314954c9277bf0359cea1b4767a6c3aa436be01bb86823cbcd8e84ad6f9d53.png

Model#

L = shape.d*Aspect
def create_model(length, section, material):
    model = xara.Model(ndm=3, ndf=6)
    
    model.node(1, (     0, 0, 0))
    model.node(2, (length, 0, 0))

    model.fix(1, (1,1,1,  1,1,1))
    model.fix(2, (1,1,0,  0,1,1))

    model.material(material)
    model.section(section)

    model.geomTransf("Linear",  1, (0, 0, 1))
    model.element("ForceFrame", 1, (1,2), 
                  section=section, 
                  shear=1, 
                  transform=1)

    return model

Loading#

The following create_loads function sets up the loading:

  • A xara.TimeSeries is created to define the cyclic loading history

  • A xara.NodalValue object is created to impose the value of the displacements of the node with tag ctrl_node in DOF number 3

  • A xara.StaticPattern is created assigning the TimeSeries to the NodalValue constraint

def create_loads(model, ctrl_node):

    a = 0.1

    series = xara.TimeSeries(values=[0,  0.05,   0.5, -0.5, -0.05],
                             time=  [0,   a,      1,    4,    5 ])

    # Create the control load
    ctrl = xara.NodalValue(model, node=ctrl_node, dof=3, value=1.0)

    pattern = xara.StaticPattern(ctrl, series=series)

    model.pattern(pattern)

Analysis#

The analyze function takes the xara.Model and creates an appropriate analysis object:

  • xara.StaticAnalysis oversees a static analysis

def analyze(model, ctrl_node, plots=()):

    # Loading
    step = 100
    analysis = xara.StaticAnalysis(model,
                                   integrator=xara.LoadFactorControl("Proportional", 1/step),
                                   system="BandGeneral",
                                   constraints="Transformation", 
                                   test=("Energy", 1e-18, 20, 0))

    for _ in range(step*5):
        if model.state.time >= 5.0:
            break

        if analysis.analyze(1) != 0:
            print(f"Failed at time = {model.state.time}")
            return

        for plot in plots:
            plot.update(model)
import matplotlib.pyplot as plt
from post import PlotResponse
from xara.post import FiberStress

##
plot_1 = PlotResponse()


_,plot_stress = plt.subplots(1,2)
plot_stress[0].figure.subplots_adjust(wspace=0.8)

##

for i,section in enumerate(sections):


    print(f"Running {section.type}")

    model = create_model(L, section, material)

    ctrl_node = find_node(model, x=L)

    create_loads(model, ctrl_node)

    plot_1.reset(model,
                node=ctrl_node, 
                dof=3,
                label=section.type
    )


    analyze(model, ctrl_node, plots=[plot_1])

    plot_1.draw()

    # Plot stress distribution at the end of the analysis
    artist = veux.ShapeArtist(shape, ax=plot_stress[i])
    artist.draw_surfaces(
        field=FiberStress(model, shape, section=1, stress="svm", element=1),
        cbar_label="Von Mises Stress (ksi)",
    )


plot_1.finish()
Running NDFiber
Running MultiaxialFiber
../../_images/b5166909f1eaba61f3d144e6539328c262bd533d97a718234abf9619b0d4607e.png ../../_images/e4b0695d51b501ac321f0429616471e18c1694e2cffc3fc14be3bb9053313383.png

References#

  • C. M. Perez, ā€œNonlinear modeling of frame members for rapid infrastructure assessment,ā€ Ph.D., University of California, Berkeley, Berkeley, CA, 2026. Available at: https://escholarship.org/uc/item/3zn367p3

Contents
  • Modeling
    • Material
    • Section
    • Model
  • Loading
  • Analysis
  • References

By PEER

Ā© Copyright Berkeley, CA.