g=9.81 #m/s^2
file="https://upload.wikimedia.org/wikipedia/commons/b/bd/Rowing_pictogram.png"
logo=io.imread(file)
def presion(z,H1,H2,rho1,rho2): #H1 es la cota de la superficie superior desde el fondo
if z>H2: return rho1*g*(H1-z)
else:
return rho1*g*(H1-H2)+rho2*g*(H2-z)
def dibujar_perfil(H1,H2,rho1,rho2):
if H2>H1:
H2=H1
N = int(H1)*25 #numero de puntos a representar
zz = np.linspace(0, H1, N) #puntos en z
#pp = presion(zz,H1,H2,rho1,rho2)
pp=np.zeros((N,1))
for i in range(0,N):
pp[i] = presion(zz[i],H1,H2,rho1,rho2)
fig, ax = plt.subplots(figsize=(6, 6))
rect1 = plt.Rectangle((0, 0), pp[0], H2, color='#64ABE1', alpha=0.35)
ax.add_patch(rect1)
rect2 = plt.Rectangle((0, H2), pp[0], H1-H2, color='#64ABE1', alpha=0.2)
ax.add_patch(rect2)
ax.plot(pp,zz, color="r",linewidth=1.8)
ax.plot((pp[0],pp[N-1]),(H1,H1), color="tab:blue", linestyle="-",linewidth=1.8)
ax.plot((0,0),(0,H1), color="black", linestyle="--")
ax.plot((presion(H2,H1,H2,rho1,rho2),presion(H2,H1,H2,rho1,rho2)),(0,H2), color="red", linestyle=":")
for i in range(0,N,5): # esto es un bucle para pintar flechas
ax.annotate("", xy=(0.0, zz[i]), xytext=(pp[i], zz[i]),arrowprops={'arrowstyle':'->','lw': 1.2, 'color': 'r', 'alpha': 0.7})
ax.set_xlabel("p (Pa)") # Nombre y unidades del eje x
ax.set_ylabel("z (m)") # Nombre y unidades del eje y
ax.set_ylim([0,5])
imagebox = OffsetImage(logo, zoom = 0.15)
ab = AnnotationBbox(imagebox, (pp[0]*0.65, H1+0.075), frameon = False)
ax.add_artist(ab)
def dibujar_perfil_y_fuerzas(H1,H2,rho1,rho2):
if H2>H1:
H2=H1
N = int(H1)*25 #numero de puntos a representar
zz = np.linspace(0, H1, N) #puntos en z
#pp = presion(zz,H1,H2,rho1,rho2)
pp=np.zeros((N,1))
for i in range(0,N):
pp[i] = presion(zz[i],H1,H2,rho1,rho2)
presH2=presion(H2,H1,H2,rho1,rho2)
fig, ax = plt.subplots(figsize=(6, 6))
rect1 = plt.Rectangle((0, 0), pp[0], H2, color='#64ABE1', alpha=0.35)
ax.add_patch(rect1)
rect2 = plt.Rectangle((0, H2), pp[0], H1-H2, color='#64ABE1', alpha=0.2)
ax.add_patch(rect2)
ax.plot(pp,zz, color="r",linewidth=1.8)
ax.plot((pp[0],pp[N-1]),(H1,H1), color="tab:blue", linestyle="-",linewidth=1.8)
ax.plot((0,0),(0,H1), color="black", linestyle="--")
ax.plot((presH2,presH2),(0,H2), color="red", linestyle=":", alpha= 0.3)
for i in range(0,N,5): # esto es un bucle para pintar flechas
ax.annotate("", xy=(0.0, zz[i]), xytext=(pp[i], zz[i]),arrowprops={'arrowstyle':'->','lw': 1.2, 'color': 'r', 'alpha': 0.3})
F1=0.5*presH2*(H1-H2)
F2=presH2*H2
F3=0.5*(pp[0]-presH2)*H2
M1=F1*(H2+(H1-H2)/3)
M2=F2*(H2/2)
M3=F3*(H2/3)
Ft=F1+F2+F3
Mt=M1+M2+M3
z_cp=Mt/Ft
len1=F1/Ft*pp[0]*0.8
len2=F2/Ft*pp[0]*0.8
len3=F3/Ft*pp[0]*0.8
lent=pp[0]*0.8
ax.annotate("", xy=(0.0, H2/2), xytext=(len2, H2/2),arrowprops={'arrowstyle':'->','lw': 2, 'color': 'tab:red', 'alpha': 0.9})
ax.annotate("", xy=(presH2, H2/3), xytext=(presH2+len3, H2/3),arrowprops={'arrowstyle':'->','lw': 2, 'color': 'tab:red', 'alpha': 0.9})
ax.annotate("", xy=(0.0, H2+(H1-H2)/3), xytext=(len1, H2+(H1-H2)/3),arrowprops={'arrowstyle':'->','lw': 2, 'color': 'tab:red', 'alpha': 0.9})
ax.plot(0,z_cp,'ko')
ax.annotate("", xy=(0.0,z_cp), xytext=(lent, z_cp),arrowprops={'arrowstyle':'->, head_width=0.4, head_length=0.9', 'lw': 4, 'color': 'tab:orange', 'alpha': 0.9})
print("La fuerza total es:",Ft/1000,"KN")
print("El momento total es:",Mt/1000,"KN·m")
print("El centro de presiones está en z_cp=",z_cp,"m")
imagebox = OffsetImage(logo, zoom = 0.15)
ab = AnnotationBbox(imagebox, (pp[0]*0.65, H1+0.075), frameon = False)
ax.add_artist(ab)
ax.set_xlabel("p (Pa)") # Nombre y unidades del eje x
ax.set_ylabel("z (m)") # Nombre y unidades del eje y
ax.set_ylim([0,5])