Load factor control

Load factor control#

Download notebook

Hockling problem, as desribed by Perez and Filippou (2024).

Modeling#

from xara.benchmarks import Prism
import xara
from shps.rotor import exp
import numpy as np
ne = 20
E  = 71_240
G  = 27_190
I  = 0.0833
A  = 10.0
J  = 2.16
L  = 240.0

def create_model(element):

    prism = Prism(
        length = L,
        element = element,
        material = dict(
            E   = E,
            G   = G,
        ),
        shape   = dict(
            A   = A,
            J   = J,
            Iy  = I,
            Iz  = I,
            Ay  = A,
            Az  = A),
        boundary = ((1,1,1, 1,1,1),
                    (0,1,1, 0,1,1)),
        transform = "Corotational02",
        divisions = ne,
        rotation = exp([0,  0.0, 0.005])
    )

    return prism.create_model()

Analysis#

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
ax.grid("on")
ax.axvline(0, color='k', lw=0.5)
ax.axhline(0, color='k', lw=0.5)

Markers = iter((":", "."))

for element in ["ForceFrame"]:
    print(element)
    model = create_model(element)

    #
    # Analysis
    #
    scale = 5 #0.0
    steps = 65
    Tref  = 2*E*I/L

    f = [0, 0, 0] + list(map(float, [Tref, 0, 0]))

    model.pattern("Plain", 1, "Linear", load={
        ne+1: f
    })

    analysis = xara.StaticAnalysis(model, 
        test=("NormDispIncr", 1e-9, 52, 0),
        integrator=xara.LoadFactorControl("MinUnbalDispNorm", 1, 5,  1/steps/800, 1),
        system="BandGeneral"
    )

    u = []
    lam = []
    time = []

    for i in range(390):
        u.append(model.nodeDisp(ne+1, 4)/np.pi)
        time.append(model.getTime())
        lam.append(model.getLoadFactor(1))
        try:
            analysis.analyze()
        except:
            break


    ax.plot(u, lam,  next(Markers), label=element)

ax.legend()
ForceFrame
<matplotlib.legend.Legend at 0x12642d4c0>
../../_images/40ee600365c0033baf556a20601d31bde8edbe91b274101a6e3c345845cd8cd7.png

References#

  1. C. M. Perez and F. C. Filippou, “On nonlinear geometric transformations of finite elements,” Numerical Meth Engineering, vol. 125, no. 17, Sep. 2024, doi: 10.1002/nme.7506.