import numpy as np import matplotlib.pyplot as plt import math print("CALCULO DE TENSIONES PRINCIPALES POR CIRCULO DE MOHR") while(True): print("""¿Qué quiere hacer? Escriba una opción 1) Realizar el cálculo de tensiones principales 2) Salir""") opcion = input() if opcion == '1': Sigmax = float(input('Ingrese valor \u03C3x:')) #Defino el valor de esfuerzo normal Sigma x. Sigmay = float(input('Ingrese valor \u03C3y:')) #Defino el valor de esfuerzo normal Sigma y. Tauxy = float(input('Ingrese valor \u03C4xy:')) #Defino el valor de esfuerzo cortante Tau xy. Sigma_medio = (Sigmax + Sigmay) / 2 #Calula el valor del Sigma promedio. Radio = np.sqrt(0.25 * (Sigmax - Sigmay) ** 2 + (Tauxy) ** 2) #Calcula el valor del radio del circulo. Sigma_1 = Sigma_medio+Radio #Calcula el valor de la tensión principal Sigma 1 a partir de Sigma promedio y Radio. Sigma_2 = Sigma_medio-Radio #Calcula el valor de la tensión principal Sigma 2 a partir de Sigma promedio y Radio. Tita_2P = math.degrees(math.atan(2 * Tauxy / (Sigmax - Sigmay))) # Calcula el valor de tita, el ángulo que se debe rotar para llegar a la dirección de tensiones principales. Sigma_1_format = "{:.2f}".format(Sigma_1) #Formato variable a 2 decimales. Sigma_2_format = "{:.2f}".format(Sigma_2) #Formato variable a 2 decimales. Sigma_medio_format = "{:.2f}".format(Sigma_medio) #Formato variable a 2 decimales. Radio_format = "{:.2f}".format(Radio) #Formato variable a 2 decimales. print("RESULTADOS:") print("\u03C31:",Sigma_1_format) #muestra el valor de Sigma 1. print("\u03C32:",Sigma_2_format) #muestra el valor de Sigma 2. print("\u03C3media:",Sigma_medio_format) #muestra el valor de Sigma promedio. print("\u03C4máximo:",Radio_format) #muestra el valor máxima tensión cortante, o sea Radio. print("Ángulo principal 2\u03B8:",Tita_2P) #muestra el valor de Ángulo principal 2tita. circunferencia = np.linspace(0, 2 * np.pi, 360) x = Sigma_medio + Radio * np.cos(circunferencia) y = Radio * (np.sin(circunferencia)) Extremo_ejex_menor = Sigma_medio - Radio - (Sigma_medio - Radio)*0.10 #Defino el valor mínimo para el trazado del eje x dando 10% de longitud adicional. Extremo_ejex_mayor = Sigma_medio + Radio + (Sigma_medio + Radio)*0.10 #Defino el valor máximo para el trazado del eje x dando 10% de longitud adicional. Extremo_ejey_menor = - Radio - (Radio)*0.10 #Defino el valor mínimo para el trazado del eje y dando 10% de longitud adicional. Extremo_ejey_mayor = + Radio + (Radio)*0.10 #Defino el valor máximo para el trazado del eje y dando 10% de longitud adicional. Punto_A_x = Sigma_medio + Radio * np.cos(Tita_2P) #Obtengo coordenada en x del punto A. Punto_A_y = Radio * np.sin(Tita_2P) #Obtengo coordenada en y del punto A. Punto_B_x = Sigma_medio - Radio * np.cos(Tita_2P) #Obtengo coordenada en x del punto B. Punto_B_y = Radio * np.sin(Tita_2P) #Obtengo coordenada en y del punto B. plt.plot(x, y) # Se grafica el circulo. plt.plot([Extremo_ejex_menor, Extremo_ejex_mayor], [0, 0], linestyle='--', color='black') #Se grafica el eje x en lineas de trazos de color negro. plt.plot([Sigma_medio, Sigma_medio], [Extremo_ejey_menor, Extremo_ejey_mayor], linestyle='--', color='black') #Se grafica el eje de centro de circulo en y en lineas de trazos de color negro. plt.plot([0,0], [Extremo_ejey_menor, Extremo_ejey_mayor], linestyle='-', color='black') #Se grafica el eje y en línea de color negro. plt.plot([0,Extremo_ejex_menor], [0,0], linestyle='-', color='black') #Se grafica el eje x en línea 1de color negro. plt.plot([Punto_A_x,Punto_A_x],[0,-Punto_A_y], linestyle='--', color='blue') #Se grafica la línea vertical desde Sigma x hasta A, es decir, el esfuerzo cortante Tauxy. plt.plot([Punto_B_x,Punto_B_x],[0,Punto_B_y], linestyle='--', color='blue') #Se grafica la línea vertical desde Sigma y hasta B, es decir, el esfuerzo cortante Tauxy. plt.plot([Punto_B_x,Punto_A_x],[Punto_B_y,-Punto_A_y], linestyle='--', color='blue') #Se grafica la línea que une el punto A, el centro de circulo y el punto B. Es decir, el diámetro del circulo. plt.plot([Punto_B_x],[Punto_B_y], marker=10, color='red') # Se grafica un punto en forma de triángulo rojo en B. plt.plot([Punto_A_x],[-Punto_A_y], marker=10, color='red') # Se grafica un punto en forma de triángulo rojo en A. plt.text(Punto_A_x,-Punto_A_y,'A',fontdict=None,) #Se grafica la letra A en la coordenada del punto A. plt.text(Punto_B_x,Punto_B_y,'B',fontdict=None,) #Se grafica la letra B en la coordenada del punto B. plt.plot([Sigma_1],[0], marker="o", color='blue') # Se grafica un punto en forma de triángulo rojo representando Sigma 1. plt.plot([Sigma_2],[0], marker="o", color='blue') # Se grafica un punto en forma de triángulo rojo representando Sigma 2. plt.text(Sigma_1+3,3,r"$\sigma $1",fontdict=None,) #Se grafica el nombre Sigma 1 en el punto del circulo. plt.text(Sigma_2-3,3,r"$\sigma $2",fontdict=None,) #Se grafica el nombre Sigma 2 en el punto del circulo. plt.show() elif opcion =='2': print("¡FIN!") break else: print("Vuelva a intentar ingresar una opción correcta")