Simple triangular truss.

The system is statically determined and allows for easy validation of calculated deformation, reactions and internal forces.

Author: Peter Mackenzie-Helnwein

Setup

from femedu.examples import Example

from femedu.domain import System, Node
# from femedu.elements.linear import Truss
from femedu.elements.finite import Truss
from femedu.materials import FiberMaterial

from femedu.solver import NewtonRaphsonSolver, NewtonRaphsonSolverSparse

Create the example by subclassing the Example

class ExampleTruss01(Example):

    def problem(self):
        # initialize a system model
        B = 6.0 * 12
        H = 3.0 * 12
        params = {'E': 10., 'A': 1., 'nu': 0.0, 'fy': 1.e30}

        model = System()
        # model.setSolver(NewtonRaphsonSolver())
        model.setSolver(NewtonRaphsonSolverSparse())

        # create nodes
        nd0 = Node(0.0, 0.0)
        nd1 = Node(  B, 0.0)
        nd2 = Node(0.5*B, H)

        model.addNode(nd0, nd1, nd2)

        # create elements
        model.addElement(Truss(nd0, nd1, FiberMaterial(params)))  # bottom 1
        model.addElement(Truss(nd0, nd2, FiberMaterial(params)))  # up right diag 1
        model.addElement(Truss(nd1, nd2, FiberMaterial(params)))  # up left diag 1

        # define support(s)
        nd0.fixDOF('ux', 'uy')    # pin support left end
        nd1.fixDOF('uy')            # roller support right end

        # add loads
        # .. load only the upper nodes
        nd2.setLoad([0.0, -1.0], ('ux', 'uy'))

        # analyze the model
        model.solve(verbose=True)

        # write out report
        model.report()

        # create plots
        model.plot(factor=1., filename="truss01_deformed.png")
        model.beamValuePlot('f',filename="truss01_forces.png")

Run the example by creating an instance of the problem and executing it by calling Example.run()

if __name__ == "__main__":
    ex = ExampleTruss01()
    ex.run()
  • Deformed System (magnification=1.00)
  • Axial Forces
norm of the out-of-balance force:   1.0000e+00
norm of the out-of-balance force:   2.3898e-01
norm of the out-of-balance force:   8.1640e-02
norm of the out-of-balance force:   2.0865e-02
norm of the out-of-balance force:   1.4409e-03
norm of the out-of-balance force:   8.7150e-06
norm of the out-of-balance force:   3.2542e-10
+

System Analysis Report
=======================

Nodes:
---------------------
  Node_24:
      x:    [0.000 0.000]
      fix:  ['ux', 'uy']
      u:    [0.000 -0.000]
  Node_25:
      x:    [72.000 0.000]
      fix:  ['uy']
      u:    [5.693 -0.000]
  Node_26:
      x:    [36.000 36.000]
      P:    [0.000 -1.000]
      u:    [2.847 -10.478]

Elements:
---------------------
  Truss: Node_24 to Node_25:
      material properties: FiberMaterial(Material)({'E': 10.0, 'A': 1.0, 'nu': 0.0, 'fy': 1e+30})  strain:0.0761046208575653   stress:{'xx': np.float64(0.761046208575653), 'yy': 0.0, 'zz': 0.0, 'xy': 0.0}
      internal force: 0.761046208575653
  Truss: Node_24 to Node_26:
      material properties: FiberMaterial(Material)({'E': 10.0, 'A': 1.0, 'nu': 0.0, 'fy': 1e+30})  strain:-0.0910599435310268   stress:{'xx': np.float64(-0.910599435310268), 'yy': 0.0, 'zz': 0.0, 'xy': 0.0}
      internal force: -0.910599435310268
  Truss: Node_25 to Node_26:
      material properties: FiberMaterial(Material)({'E': 10.0, 'A': 1.0, 'nu': 0.0, 'fy': 1e+30})  strain:-0.0910599435310268   stress:{'xx': np.float64(-0.910599435310268), 'yy': 0.0, 'zz': 0.0, 'xy': 0.0}
      internal force: -0.910599435310268

Total running time of the script: (0 minutes 0.043 seconds)

Gallery generated by Sphinx-Gallery