Code Monkey home page Code Monkey logo

stiffpy's Introduction

stiffpy


This repo has code for structural analysis with the direct stiffness method, a matrix method that uses stiffness relations. The code can handle various elements, loads and boundary conditions.

This project is still in development

Install stiffpy

To install stiffpy you need to manually clone the repository.

Features

  • Shear Force Diagrams
  • Bending Moment Diagrams
  • Displacements
  • Fixed Supports
  • Hinged Supports
  • Custom Supports
  • Point Actions in Nodes and Elements
  • Distributed Forces in Elements
  • Hinged Elements
  • Releases at Element end nodes

Programs

  • Truss
  • Beam
  • Frame
  • Spring
  • Linear Triangle (Soon)

Examples

Spring Example

# Import Modules
from stiffpy.spring import *
# Define Nodes
node_1 = Node(0)
node_2 = Node(10)
node_3 = Node(20)
# Define Members
member_1 = Member(node_1, node_2, 10)
member_2 = Member(node_2, node_3, 20)
# Define Beam
spring = Spring()
# Add Node Loads
node_2.force = Force(-10)
# Add Restrains
node_1.restrains = True
node_3.restrains = True
# Add Members to Beam Object
spring.members = member_1
spring.members = member_2
spring.solve()
print(spring.reactions)

Beam Example

"""
Integrated Matrix Analysis of Structures, Mario Paz & William Leigh
Illustrative Example 1.4, pp 17
"""
# Import Modules
from stiffpy.material import Material
from stiffpy.section import Section
from stiffpy.beam import *
# Define Material and Section
material = Material(E=29e3, f_y=1, f_u=1)
section = Section(A=1, Ix=882, material=material)
# Define Nodes
node_1 = Node(0)
node_2 = Node(90)
node_3 = Node(180)
node_4 = Node(300)
node_5 = Node(396)
# Define Members
member_1 = Member(node_1, node_2, section)
member_2 = Member(node_2, node_3, section)
member_3 = Member(node_3, node_4, section)
member_4 = Member(node_4, node_5, section)
# Define Beam
beam = Beam()
# Add Node Loads
node_2.force = Force(-10)
node_3.moment = Moment(-50)
# Add Member Loads
member_1.forces = [10, Force(-30)]
member_1.forces = [20, Force(-10)]
member_2.distributed_loads = [0, DistributedForce(-.1, -.1, 90)]
member_3.distributed_loads = [20, DistributedForce(-.1, -.2, 75)]
member_4.distributed_loads = [0, DistributedForce(-.05, -.05, 96)]
member_4.moments = [48, Moment(100)]
# Add Restrains
node_1.restrains = [True, True]
node_3.restrains = [True, False]
node_4.restrains = [True, False]
node_5.restrains = [True, True]
# Add Members to Beam Object
beam.members = member_1
beam.members = member_2
beam.members = member_3
beam.members = member_4
beam.solve()
print(beam.reactions)

Truss Example

"""
Integrated Matrix Analysis of Structures, Mario Paz & William Leigh
Illustrative Example 6.1, pp 207
"""
# Import modules
from stiffpy.material import Material
from stiffpy.section import Section
from stiffpy.truss import *
# Define Material and Section
material = Material(E=30e3, f_y=1, f_u=1)
section = Section(A=10, Ix=882, material=material)
# Define Nodes
node_1 = Node((0, 0))
node_2 = Node((100, 0))
node_3 = Node((0, 100))
# Define Members
member_1 = Member(node_1, node_2, section)
member_2 = Member(node_1, node_3, section)
member_3 = Member(node_3, node_2, section)
# Define Beam
truss = Truss()
# Add Node Loads
node_3.force = Force((10, 0))
# Add Restrains
node_1.restrains = [True, True]
node_2.restrains = [False, True]
# Add Members to Beam Object
truss.members = member_1
truss.members = member_2
truss.members = member_3
truss.solve()
print(truss.reactions)

Frame Example

# Import Modules
from stiffpy.material import Material
from stiffpy.section import Section
from stiffpy.frame import *
# Define Material
material = Material(E=2e7, f_y=1, f_u=1)
# Define Section
section = Section(A=11.8*0.0254**2, Ix=518*0.0254**4, material=material)
# Define Frame Object
frame = Frame()
# Define Nodes
node_1: Node = Node([0, 0])
node_2: Node = Node([0, 10])
node_3: Node = Node([5, 10])
node_4: Node = Node([10, 10])
node_5: Node = Node([15, 5])
node_6: Node = Node([5, 5])
# Define Members
member_1 = Member(node_1, node_2, section)
member_2 = Member(node_2, node_3, section)
member_3 = Member(node_3, node_4, section)
member_4 = Member(node_4, node_5, section)
member_5 = Member(node_3, node_6, section)
# Add Actions
member_1.distributed_loads = [0, DistributedForce([0, -10], [0, -10], 10)]
member_2.distributed_loads = [0, DistributedForce([0, -10], [0, -10], 5)]
member_3.distributed_loads = [0, DistributedForce([0, -10], [0, -10], 5)]
member_4.distributed_loads = [0, DistributedForce([10/2**0.5, -10/2**0.5],
    [10/2**0.5, -10/2**0.5], 5*2**0.5)]
# Add Restrains
node_1.restrains = [True, True, True]
node_5.restrains = [True, True, True]
node_6.restrains = [True, True, True]
# Add Members to Frame Objects
frame.members = member_1
frame.members = member_2
frame.members = member_3
frame.members = member_4
frame.members = member_5
# Solve
frame.solve()
print(frame.reactions)
frame.draw_deformations(20)

Todo's

  • Deformed shape error
  • Instead of using a vector for the rotation of the local coordinates, use euler angles.
  • Improve typing

About

Developer: Eduardo Paolo Oros
Email: [email protected]

stiffpy's People

Contributors

edupaolo avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.