Skip to main content

Librería para el análisis de estructuras (Truss).

Project description

Milcatrusspy

instalacion

pip install milcatrusspy

Capacidad de la libreria

  • Creacion de nodos (2D y 3D)
  • Creacion de elementos articulados (armadura) (2D y 3D)
  • Aplicacion de cargas (2D y 3D)
  • Aplicacion de restringimientos (2D y 3D)
  • Resolucion de la estructura (2D y 3D)
  • Impresion de resultados (2D y 3D)
  • Graficacion de la estructura (2D y 3D)
  • Graficacion de la estructura deformada (2D y 3D)
  • Graficacion de las fuerzas (2D y 3D)

Comandos de uso en 2D

Metodos de la clase Model

Creacion del modelo

model = Model(ndm: int=2)

Creacion de nodos

add_node(tag: int, x: float, y: float)

Creacion de elementos articulados (armadura)

add_element(tag: int, tag_node_i: int, tag_node_j: int, E: float, A: float)

Aplicacion de cargas

set_load(tag_node: int, fx: float, fy: float)

Aplicacion de restringimientos

set_restraints(tag_node: int, ux: bool, uy: bool)

Resolucion de la estructura

model.solve()

Impresion de resultados

model.print_results()

Graficacion de la estructura

model.plot_model(labels: bool)

Graficacion de la estructura deformada

model.plot_deformed(scale: float, labels: bool)

Graficacion de las fuerzas

model.plot_forces(scale: float, labels: bool)

Ejemplo de uso en 2D

from milcatrusspy import Model

model = Model(ndm=2)
model.add_node(tag=1, x=0, y=0)
model.add_node(tag=2, x=0, y=4)
model.add_node(tag=3, x=4, y=0)
model.add_node(tag=4, x=4, y=4)
model.add_node(tag=5, x=8, y=0)
model.add_node(tag=6, x=8, y=4)
model.add_element(tag=1, tag_node_i=1, tag_node_j=2, E=2.1e6, A=0.3*0.5)
model.add_element(tag=2, tag_node_i=1, tag_node_j=4, E=2.1e6, A=0.3*0.5)
model.add_element(tag=3, tag_node_i=1, tag_node_j=3, E=2.1e6, A=0.3*0.5)
model.add_element(tag=4, tag_node_i=2, tag_node_j=4, E=2.1e6, A=0.3*0.5)
model.add_element(tag=5, tag_node_i=3, tag_node_j=4, E=2.1e6, A=0.3*0.5)
model.add_element(tag=6, tag_node_i=3, tag_node_j=5, E=2.1e6, A=0.3*0.5)
model.add_element(tag=7, tag_node_i=4, tag_node_j=5, E=2.1e6, A=0.3*0.5)
model.add_element(tag=8, tag_node_i=4, tag_node_j=6, E=2.1e6, A=0.3*0.5)
model.add_element(tag=9, tag_node_i=5, tag_node_j=6, E=2.1e6, A=0.3*0.5)
model.set_restraints(tag_node=1, ux=True, uy=True)
model.set_restraints(tag_node=2, ux=True, uy=True)
model.set_load(tag_node=6, fy=-10)
model.solve()
model.print_results()
model.plot_model(labels=True)
model.plot_deformed(scale=1000, labels=True)
model.plot_forces(scale=1000, labels=True)

Resultados del ploteo

Modelo Modelo deformado Fuerzas

Comandos de uso en 3D

Metodos de la clase Model

Creacion del modelo

model = Model(ndm: int=3)

Creacion de nodos

add_node(tag: int, x: float, y: float, z: float)

Creacion de elementos articulados (armadura)

add_element(tag: int, tag_node_i: int, tag_node_j: int, E: float, A: float)

Aplicacion de cargas

set_load(tag_node: int, fx: float, fy: float, fz: float)

Aplicacion de restringimientos

set_restraints(tag_node: int, ux: bool, uy: bool, uz: bool)

Resolucion de la estructura

model.solve()

Impresion de resultados

model.print_results()

Graficacion de la estructura

model.plot_model(labels: bool)

Graficacion de la estructura deformada

model.plot_deformed(scale: float, labels: bool)

Graficacion de las fuerzas

model.plot_forces(scale: float, labels: bool)

Ejemplo de uso en 3D

from milcatrusspy import Model

cercha = Model()

nodes = [
    [1, 0, 0, 0],
    [2, 0, 0, 4],
    [3, 4, 0, 4],
    [4, 4, 0, 0],
    [5, 0, 4, 0],
    [6, 0, 4, 4],
    [7, 4, 4, 4],
    [8, 4, 4, 0],
    [9, 0, 8, 0],
    [10, 0, 8, 4],
    [11, 4, 8, 4],
    [12, 4, 8, 0]
]

elements = [
    [1, 1, 2, 2100000.0, 0.15],
    [2, 2, 3, 2100000.0, 0.15],
    [3, 3, 4, 2100000.0, 0.15],
    [4, 4, 1, 2100000.0, 0.15],
    [5, 5, 6, 2100000.0, 0.15],
    [6, 6, 7, 2100000.0, 0.15],
    [7, 7, 8, 2100000.0, 0.15],
    [8, 8, 5, 2100000.0, 0.15],
    [9, 9, 10, 2100000.0, 0.15],
    [10, 10, 11, 2100000.0, 0.15],
    [11, 11, 12, 2100000.0, 0.15],
    [12, 12, 9, 2100000.0, 0.15],
    [13, 1, 5, 2100000.0, 0.15],
    [14, 2, 6, 2100000.0, 0.15],
    [15, 3, 7, 2100000.0, 0.15],
    [16, 4, 8, 2100000.0, 0.15],
    [17, 5, 9, 2100000.0, 0.15],
    [18, 6, 10, 2100000.0, 0.15],
    [19, 7, 11, 2100000.0, 0.15],
    [20, 8, 12, 2100000.0, 0.15],
    [21, 1, 6, 2100000.0, 0.15],
    [22, 4, 7, 2100000.0, 0.15],
    [23, 6, 9, 2100000.0, 0.15],
    [24, 7, 12, 2100000.0, 0.15]
]

for (tag, x, y, z) in nodes:
    cercha.add_node(tag, x, y, z)

for (tag, tag_node_i, tag_node_j, E, A) in elements:
    cercha.add_element(tag, tag_node_i, tag_node_j, E, A)

for i in range(1, 5):
    cercha.set_restraints(i, True, True, True)

cercha.set_load(10, fz=-10)
cercha.set_load(11, fz=-10)

cercha.solve()
cercha.print_results()
cercha.plot_model(labels=True)
cercha.plot_deformed(scale=1000, labels=True)
cercha.plot_forces(0.05, labels=True)

Resultados del ploteo

ploteo de la estructura Modelo ploteo de la estructura deformada Modelo deformado ploteo de las fuerzas (rojo: compresion, azul: traccion) Fuerzas

Obtener Resultados

model.print_results()

esto imprimira los resultados en la terminal tanto de los nodos como de los elementos ademas este metodo retorna 2 dataframes con los resultados de los nodos y los elementos respectivamente

en una tabla de la forma:

Resultados de los Nodos

Node 1 Node 2 Node ... Node n
UX ... ... ... ...
UY ... ... ... ...
UZ ... ... ... ...

Resultados de los Elementos

Element 1 Element 2 Element ... Element n
U1 ... ... ... ...
U2 ... ... ... ...
F1 ... ... ... ...
F2 ... ... ... ...
Estado ... ... ... ...
Longitud ... ... ... ...

Comprobacion de resultados

del ejemplo en 3D

Node 1 Node 2 Node 3 Node 4 Node 5 Node 6 Node 7 Node 8 Node 9 Node 10 Node 11 Node 12
UX_sap2000 0 0 0 0 0 0 0 0 0 0 0 0
UY_sap2000 0 0 0 0 -0.000127 0.000254 0.000254 -0.000127 -0.000254 0.000254 0.000254 -0.000254
UZ_sap2000 0 0 0 0 -0.000613 -0.000613 -0.000613 -0.000613 -0.001480 -0.001607 -0.001607 -0.001480
UX_milcatrusspy 0 0 0 0 0 0 0 0 0 0 0 0
UY_milcatrusspy 0 0 0 0 -0.000127 0.000254 0.000254 -0.000127 -0.000254 0.000254 0.000254 -0.000254
UZ_milcatrusspy 0 0 0 0 -0.000613 -0.000613 -0.000613 -0.000613 -0.001480 -0.001607 -0.001607 -0.001480
%error (UX) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%
%error (UY) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%
%error (UZ) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%

del ejemplo en 2D

Node 1 Node 2 Node 3 Node 4 Node 5 Node 6
UX_sap2000 0 0 0 0 0 0
UY_sap2000 0 0 -0.000127 0.000254 -0.000254 0.000254
UZ_sap2000 0 0 -0.000613 -0.000613 -0.001480 -0.001607
UX_milcatrusspy 0 0 0 0 0 0
UY_milcatrusspy 0 0 -0.000127 0.000254 -0.000254 0.000254
UZ_milcatrusspy 0 0 -0.000613 -0.000613 -0.001480 -0.001607
%error (UX) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%
%error (UY) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%
%error (UZ) 0.00% 0.00% 0.00% 0.00% 0.00% 0.00%

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

milcatrusspy-0.1.0-py3-none-any.whl (9.3 kB view details)

Uploaded Python 3

File details

Details for the file milcatrusspy-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: milcatrusspy-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 9.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.13.3

File hashes

Hashes for milcatrusspy-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 2caf4b52540401aa771cff40e53d3d5d09c67765bdeed364938828771e90b405
MD5 8368518331e911a9177f9fe9540e32bd
BLAKE2b-256 0c96366cb2b186004783f011386150c8632bdd7c0a87e1e0c14888764a2fece6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page