Section Library#

import veux
import numpy as np

import xara.units.fks as units
from xara.units.fks import kip, ksi

from xsection.library import from_aisc
from xsection.analysis import SectionInteraction

import matplotlib.pyplot as plt
plt.style.use("veux-web")

Steel#

shape = from_aisc("W14x426", units=units)
veux.render(shape.model)
/Users/claudio/miniforge3/envs/py312/lib/python3.12/site-packages/veux/frame/__init__.py:203: UserWarning: 'PlaneModel' object has no attribute 'cell_prototypes'
  warnings.warn(str(e))

Concrete#

from xsection.library import Rectangle, Circle
from xsection import CompositeSection

h = 24
b = 15
d = 7/8
r = 0 #d/2

c = 1.5

bar = Circle(d/2, z=2, mesh_scale=1/2, divisions=4, name="rebar")

shape = CompositeSection([
            Rectangle(    b, h,     z=0, name="cover"),
            Rectangle(b-2*c, h-2*c, z=1, name="core"),
            *bar.linspace([-b/2+c+r, -h/2+c+r], [ b/2-c-r,-h/2+c+r], 3), # Top bars
            *bar.linspace([-b/2+c+r,        0], [ b/2-c-r,       0], 2), # Center bars
            *bar.linspace([-b/2+c+r,  h/2-c-r], [ b/2-c-r, h/2-c-r], 3)  # Bottom bars
        ])


print(shape.summary())

artist = veux.create_artist(shape.model) #veux.model.FiberModel(shape.create_fibers()))
# artist.draw_samples()
artist.draw_outlines()
artist.draw_surfaces()
artist
  [nn]    Area                    360.0
  [nm]    Centroid                  0.0         0.0,        0.0
  [nw|v]                            0.0   1.126e-14, -1.541e-14

  [mm]    Flexural moments    2.403e+04   1.728e+04,   6.75e+03,  1.599e-13
  [mv|w]                     -7.344e+03       0.176,      1.329

          Shear center              0.0   1.019e-05,  0.0001968

  [ww]    Warping constant     6.61e+04  (  6.61e+04 at S.C.)
          Torsion constant    1.669e+04
  [vv]    Bishear             7.344e+03
        
from xara.units.iks import kip, ksi

mat = [
    { # Confined
        "name": "core",
        "type": "Concrete01",
        "Fc":   6*ksi,
        "ec0":  0.004,
        "Fcu":  5*ksi,
        "ecu":  0.014,
    },
    { # Unconfined
        "name": "cover",
        "type": "Concrete01",
        "Fc":  -5*ksi,
        "ec0": -0.002,
        "Fcu":  0,
        "ecu": -0.006,
    },
    {
        "name": "rebar",
        "type": "Steel01",
        "E":   30e3*ksi,
        "Fy":    60*ksi,
        "b":   0.01
    }
]

axial = np.linspace(-1200*kip, 250*kip, 15)

si = SectionInteraction(("Fiber", shape, mat), axial=axial)

fig, ax = plt.subplots(1,2, sharey=True, constrained_layout=True, figsize=(10, 5))
mmax = []

for n, m, k in si.moment_curvature():
    ax[0].plot(k, m, '-')

    # ax[1].plot([n]*len(m), m, '-', lw=0.3, markersize=0.5)
    ax[1].plot([n], [max(m)], 'o')

ax[0].axvline(0, color="k", lw=1)
ax[0].axhline(0, color="k", lw=1)
ax[1].axvline(0, color="k", lw=1)
ax[1].axhline(0, color="k", lw=1)
ax[0].set_xlabel("Curvature, $\\kappa$")
ax[0].set_ylabel("Moment, $M(\\varepsilon, \\kappa)$")
ax[1].set_xlabel("Axial force, $P$");
   FAILURE :: Iter:    20, Norm:     165.789, Norm deltaX: 0.000585341
   FAILURE :: Iter:    20, Norm:     63.2987, Norm deltaX: 0.000110827
   FAILURE :: Iter:    20, Norm:     17.9758, Norm deltaX: 0.000136052
   FAILURE :: Iter:    20, Norm:     10.3745, Norm deltaX: 0.000445332
   FAILURE :: Iter:    20, Norm:    0.751799, Norm deltaX: 7.09398e-05
../_images/39f2859e560425cfeb2dc5fd9ffb396b07fca58da859e0df5eeaf2cce541bd1c.png
from xsection.library import Circle, Equigon
from xara_units.iks import inch, foot 

d = 11/8*inch
ds = 4/8*inch # diameter of the shear spiral
cover = (3 + 1/8)*inch
core_radius = 5/2*foot - cover - ds - d/2
nr = 12

octagon  = Equigon(5*foot/2, z=0,
                    name="cover", divisions=8)

interior = Equigon(core_radius, z=1,
                    name="core", divisions=nr)

bar = Circle(d/2, z=2, mesh_scale=1/2, divisions=4, name="rebar")

xr = ((5*foot/2) - cover - ds - d/2, 0)


shape = CompositeSection([
            octagon,
            interior,
            *bar.linspace(xr, xr, nr, endpoint=False, center=(0,0))
        ])
print(shape.summary())

artist = veux.create_artist(shape.model) #veux.model.FiberModel(shape.create_fibers()))
# artist.draw_samples()
artist.draw_outlines()
artist.draw_surfaces()
artist
  [nn]    Area                2.982e+03
  [nm]    Centroid                  0.0         0.0,        0.0
  [nw|v]                            0.0     6.2e-16, -1.308e-16

  [mm]    Flexural moments    1.419e+06   7.094e+05,  7.094e+05,  3.954e-12
  [mv|w]                      -2.31e+04       335.5,     -722.5

          Shear center              0.0   0.0004729,  -0.001019

  [ww]    Warping constant    1.255e+05  ( 1.255e+05 at S.C.)
          Torsion constant    1.396e+06
  [vv]    Bishear              2.31e+04