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)
- Graficacion de las reacciones (2D y 3D)
- Obtener resultados (2D y 3D)
Comandos de uso en 2D
Metodos de la clase Model
Creacion del modelo
model = Model(ndm: int=2)
Creacion de nodos
model.add_node(tag: int, x: float, y: float)
Creacion de elementos articulados (armadura)
model.add_element(tag: int, tag_node_i: int, tag_node_j: int, E: float, A: float)
Aplicacion de cargas
model.set_load(tag_node: int, fx: float, fy: float)
Aplicacion de restringimientos
model.set_restraints(tag_node: int, ux: bool, uy: bool)
Resolucion de la estructura
model.solve()
Impresion de resultados
model.print_results()
Obtener resultados
nodes, elements = model.get_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_axial_forces(scale: float, labels: bool)
Graficacion de las reacciones
model.plot_reactions()
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()
nodes, elements = model.get_results()
model.print_results()
model.plot_model(labels=True)
model.plot_deformed(scale=500, labels=False)
model.plot_axial_forces(scale=0.05, labels=False)
model.plot_reactions()
Resultados del ploteo
Comandos de uso en 3D
Metodos de la clase Model
Creacion del modelo
model = Model(ndm: int=3)
Creacion de nodos
model.add_node(tag: int, x: float, y: float, z: float)
Creacion de elementos articulados (armadura)
model.add_element(tag: int, tag_node_i: int, tag_node_j: int, E: float, A: float)
Aplicacion de cargas
model.set_load(tag_node: int, fx: float, fy: float, fz: float)
Aplicacion de restringimientos
model.set_restraints(tag_node: int, ux: bool, uy: bool, uz: bool)
Resolucion de la estructura
model.solve()
Impresion de resultados
model.print_results()
Obtener resultados
nodes, elements = model.get_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_axial_forces(scale: float, labels: bool)
Graficacion de las reacciones
model.plot_reactions()
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()
nodes, elements = cercha.get_results()
cercha.print_results()
cercha.plot_model(labels=True)
cercha.plot_deformed(scale=500, labels=False)
cercha.plot_axial_forces(0.05, labels=False)
cercha.plot_reactions()
Resultados del ploteo
ploteo de la estructura
ploteo de la estructura deformada
ploteo de las fuerzas (rojo: compresion, azul: traccion)
Obtener Resultados
nodes, elements = model.get_results()
model.print_results() # Imprime los resultados en la terminal
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% |
Metadata
Release files for milcatrusspy 0.1.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| milcatrusspy-0.1.1.tar.gz | 10.4 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| milcatrusspy-0.1.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.1 kB
Release files / milcatrusspy-0.1.1.tar.gz
| Download URL | milcatrusspy-0.1.1.tar.gz |
|---|---|
| Size | 10.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ede25b4d2b2cb2c23aacf11d7468d797829e9e382d4e52e6d98ac8080d2a5d19
|
|
BLAKE2b-256 checksum How to use checksums |
5d26dcb27605f0d71fb94890e66189aa527755aa6e68cb521affd22def67ab0f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Release files / milcatrusspy-0.1.1-py3-none-any.whl
| Download URL | milcatrusspy-0.1.1-py3-none-any.whl |
|---|---|
| Size | 9.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
8fd8d45a82fe490d299a1a5b90efdb19c696a97780919913217987d2c586971c
|
|
BLAKE2b-256 checksum How to use checksums |
906cf39912c6d6e4e36e09554d3e2e9596dd56f0126dd95401b1b873aa5ad31e
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.13.3
|
Security for milcatrusspy 0.1.1
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.