In [1]:
%matplotlib inline
from nusa import *
from nusa.mesh import *
m = Modeler()
BB, ES = 1, 0.1
nc, ec = m.generate_mesh_from_file(r"C:\Users\delos\Documents\PX1502 - NuSA\nusa\docs\nusa-info\es\src\linear-triangle-element\simple.msh")
m.plot_mesh()
x,y = nc[:,0], nc[:,1]
nodos = []
elementos = []
for k,nd in enumerate(nc):
cn = Node((x[k],y[k]))
nodos.append(cn)
for k,elm in enumerate(ec):
i,j,m = int(elm[0]),int(elm[1]),int(elm[2])
ni,nj,nm = nodos[i],nodos[j],nodos[m]
ce = LinearTriangle((ni,nj,nm),200e9,0.3,0.25)
elementos.append(ce)
m = LinearTriangleModel()
for node in nodos: m.add_node(node)
for elm in elementos: m.add_element(elm)
# Aplicando condiciones de frontera en los extremos
minx, maxx = min(x), max(x)
miny, maxy = min(y), max(y)
P = 1000 # 100e3/((BB/ES)+1)
for node in nodos:
if abs(node.x - minx) < 0.05:
m.add_constraint(node, ux=0, uy=0)
if abs(node.x - maxx) < 0.15:
m.add_force(node, (P, P))
m.plot_model()
m.solve()
In [2]:
m.plot_nsol("seqv", units="Pa")
m.plot_nsol("sxx", units="Pa")
In [ ]: