import numpy as np
from numpy import array, cross, dot , sqrt
from sympy import *
from IPython.display import Image,Latex

Image(filename='FIGURES/Ejer3_12_1.png',width=250)

"""
Explanation: Problema 3.12
En la figura 1 se muestra un bloque macizo de arcilla que se extrajo temporalmente de un muro estructural.
End of explanation
"""


Image(filename='FIGURES/Ejer3_12_2.png',width=250)

"""
Explanation: Por efecto de funcionamiento del muro, todos los puntos al interior del bloque se ven sometidos al estado de esfuerzos presentado en la figura 2.
End of explanation
"""


Image(filename='FIGURES/Ejer3_12_3.png',width=250)

"""
Explanation: Ahora, para examinar el bloque este fue cortado como se muestra en la figura 3:
End of explanation
"""


Image(filename='FIGURES/Ejer3_12_4.png',width=300)

"""
Explanation: y para colocarlo nuevamente en el muro, las 2 piezas en que fue dividido se unirán con un pegamento, que con el tiempo incrementa su resistencia ante esfuerzos tangenciales y esfuerzos de tracción, tal como se muestra en la figura 4
End of explanation
"""


ra = array([-10,3,0])
rb = array([0,-2,5])

print ra, rb

"""
Explanation: Determine cual es el tiempo mínimo que se debe esperar tras aplicar el pegamento para poder colocar el bloque nuevamente en el muro sin que falle.
Solución:
Se determina inicialmente el vector normal al plano de corte para lo cual es conveniente seleccionar 3 puntos contenidos en el plano. En este caso es también conveniente fijar el origen en la esquina inferior izquierda (ver figura 3), y tomar desde allí vectores posición a 2 puntos sobre el plano. Marcando estos puntos como $A$ y $B$ se tiene:
End of explanation
"""


N = cross(ra,rb)
mag = sqrt(N.dot(N))
n = array([N[0]/mag, N[1]/mag, N[2]/mag])
mag = sqrt(n.dot(n))
print n , mag

"""
Explanation: Via producto cruz se determina el vector normal al plano: 
$$ \hat{n} = \vec{r}_a \times \vec{r}_b $$
End of explanation
"""


r5 = sqrt(5.0)
sigma = array([[10.0, -20.0 , -15.0] , [-20.0 , 6.0, 5.0] , [-15.0, 5.0, -50.0]])
sigma = sigma*r5
print sigma

"""
Explanation: De otro lado el tensor de tensiones esta dado por:
End of explanation
"""


t = dot(sigma,n)
print t

"""
Explanation: Con el cual es posible calcular el vector de tracciones sobre el plano con vector normal $n$ usando la formula de Cauchy:
$$\vec t = \left[ \sigma  \right] \cdot \hat n$$
End of explanation
"""


magt = sqrt(t.dot(t))
signn = dot(t,n)
print signn

"""
Explanation: Ahora determinemos la componente normal de $\vec{t}$ sobre el plano inclinado usando:
$${\sigma _n} = \vec t \cdot \hat n$$
End of explanation
"""


tausq = dot(t,t)-signn*signn
tau = sqrt(tausq)
print tau

"""
Explanation: Y finalmente para determinar la tensión a cortante se usa:
$${\tau ^2} = \vec t \cdot \vec t - \sigma _n^2$$
End of explanation
"""


t = tau/7
print t

from IPython.core.display import HTML
def css_styling():
    styles = open('./custom_barba.css', 'r').read()
    return HTML(styles)
css_styling()

"""
Explanation: Notando que la tensión normal es a compresión se concluye que la falla se presenta a corte. Usando la ecuación:
$$\tau = 7t$$
se tiene que el tiempo para montar la pieza sin que se produzca la falla es:
End of explanation
"""


