Diferencia entre revisiones de «Mallado 2D de Arco I (Grupo 63)»
(→Tensor de deformaciones) |
(→Campo de vectores en el mallado) |
||
| (No se muestran 255 ediciones intermedias de 4 usuarios) | |||
| Línea 1: | Línea 1: | ||
| − | {{ TrabajoED | Mallado 2D de Arco I. Grupo 63 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | | + | {{ TrabajoED | Mallado 2D de Arco I. Grupo 63 | [[:Categoría:Teoría de Campos|Teoría de Campos]]|[[:Categoría:TC25/26|2025-26]] | María Cocina Sanjuanbenito, Fernando Trocoli de Toro, Rodrigo Sánchez de León Acevedo, |
| + | Marta Reiter Hernández}} | ||
[[Categoría:Teoría de Campos]] | [[Categoría:Teoría de Campos]] | ||
| Línea 5: | Línea 6: | ||
=Introducción= | =Introducción= | ||
| − | + | En el sigiente artículo se estudia la parametrización y el mallado de una placa plana bidimensional con geometría de arco circular, delimitada por los radios 1 y 2. Sobre este dominio se definen dos magnitudes físicas: la temperatura <math>T(x,y)</math>, expresada en coordenadas cartesianas, y un campo de desplazamientos <math> \vec u(ρ,θ) </math>, descrito en coordenadas cilíndricas siguiendo la simetría geométrica del problema. | |
| − | + | La temperatura viene dada por | |
| − | + | ||
| − | + | <center><math>T(x,y)=(x-y)^2 </math> </center> | |
| − | + | ||
| + | mientras que el campo de desplazamientos se define como | ||
| + | |||
| + | <center><math>\vec{u} = \frac{1}{5}(\rho-1)\rho^2cos\theta(\vec{e}_{\theta})</math> </center> | ||
| + | |||
| + | El objetivo de esta introducción es establecer una formulación precisa del dominio y de las funciones involucradas, para disponer de una base adecuada para su discretización y análisis numérico. Incluidos en todos los apartados del artículo se incluyen códigos de Matlab, fotografías y gráficas de los resultados del problema. | ||
=Mallado de la placa= | =Mallado de la placa= | ||
Para definir el mallado de la mitad de un anillo circular usaremos dos condiciones: que esté comprendido entre los radios R1=1 y R2=2, y el plano y ≥ |x|. Al estudiar la mitad de un anillo, trabajaremos en coordenadas cilíndricas. | Para definir el mallado de la mitad de un anillo circular usaremos dos condiciones: que esté comprendido entre los radios R1=1 y R2=2, y el plano y ≥ |x|. Al estudiar la mitad de un anillo, trabajaremos en coordenadas cilíndricas. | ||
| − | Su representación quedará definida en la región (ρ,θ) ∈ [1,2] × [<math> | + | Su representación quedará definida en la región (ρ,θ) ∈ [1,2] × [<math> 0,\pi</math>]. |
Para el muestreo, que son las subdivisiones deseadas por unidad en función de ambos ejes, usaremos \(h = 1/10\). | Para el muestreo, que son las subdivisiones deseadas por unidad en función de ambos ejes, usaremos \(h = 1/10\). | ||
<br /> | <br /> | ||
| − | + | [[Archivo:MalladoA.jpg|600px|thumb|left|Figura 1.Mallado Arco]] | |
{{matlab|codigo= | {{matlab|codigo= | ||
| + | % Definimos parámetros | ||
| + | h=0.1 %muestreo | ||
| + | r=1:h:2; %radios del arco | ||
| + | t=0:h:pi; | ||
| − | + | %Mallado en coordenadas cilíndricas | |
| − | + | ||
| − | + | ||
[RR,TT]=meshgrid(r,t); | [RR,TT]=meshgrid(r,t); | ||
| − | x=RR.*cos(TT); y=RR.*sin(TT); | + | % Pasamos de cilíndricas a cartesianas |
| + | x=RR.*cos(TT); | ||
| + | y=RR.*sin(TT); | ||
| − | % | + | %Gráfica del mallado |
| − | mesh(x,y,0*x); view(2); axis equal; axis([-3,1,-3,3]); | + | figure; |
| − | xlabel('Eje X'); ylabel('Eje Y'); title('Mallado | + | mesh(x,y,0*x); view(2); axis equal; axis([-3,1,-3,3]); |
| + | xlabel('Eje X'); ylabel('Eje Y'); title('Mallado de la placa'); | ||
| − | %Bordes | + | %Bordes |
| − | hold on | + | hold on; |
| − | plot(2*cos(t),2*sin(t),'k',1*cos(t),1*sin(t),'k',[0 0],[1 2],'k',[ | + | %radio exterior r=2 |
| − | hold off | + | plot(2*cos(t),2*sin(t),'k', 'LineWidth', 2); |
| + | %radio interior r=1 | ||
| + | plot(1*cos(t), 1*sin(t), 'k', 'LineWidth', 2); | ||
| + | |||
| + | plot([1*cos(0), 2*cos(0)], [1*sin(0), 2*sin(0)], 'k', 'LineWidth', 2); | ||
| + | plot([1*cos(pi), 2*cos(pi)], [1*sin(pi), 2*sin(pi)], 'k', 'LineWidth', 2); | ||
| + | |||
| + | hold off; | ||
| + | }} | ||
=Curvas de nivel de la temperatura (isotermas)= | =Curvas de nivel de la temperatura (isotermas)= | ||
| Línea 46: | Línea 64: | ||
<br /> | <br /> | ||
| − | + | [[Archivo:Curvas_nivelA.jpg|700px|miniaturadeimagen|thumb|right|Figura 2. Representación de las curvas de nivel de la temperatura]] | |
{{matlab|codigo= | {{matlab|codigo= | ||
| − | |||
| − | |||
| − | |||
| − | |||
| − | % | + | % Parámetros |
| − | + | h = 0.2; % Paso radial | |
| − | + | r = 1:h:2; % Radios | |
| + | t = linspace(0,pi,40); | ||
| − | % | + | % Mallado polar |
| − | + | [R, Th] = meshgrid(r, t); | |
| − | + | ||
| − | + | ||
| − | + | ||
| − | % | + | % Conversión a coordenadas cartesianas |
| − | + | X = R .* cos(Th); | |
| − | + | Y = R .* sin(Th); | |
| − | + | ||
| − | + | % Función de temperatura | |
| + | T = (X - Y).^2; | ||
| + | |||
| + | %Grafica 1: CONTORNOS | ||
| + | figure; subplot(1,2,1); mesh(X, Y, 0*X); | ||
| + | hold on | ||
| + | |||
| + | % Curvas de nivel | ||
| + | contour(X, Y, T, 25, "LineWidth", 1.2); | ||
| + | |||
| + | colorbar; title('CURVAS DE NIVEL DE LA TEMPERATURA','FontSize',14); axis([-3 3 -1 3]); view(0,90); | ||
| + | xlabel('Eje X') | ||
| + | ylabel('Eje Y') | ||
| + | hold off | ||
| + | |||
| + | |||
| + | %Grafica 2: 3D | ||
| + | subplot(1,2,2); surf(X, Y, T); shading interp; colorbar; | ||
| + | title('TEMPERATURA EN 3D','FontSize',14) | ||
| + | xlabel('Eje X') | ||
| + | ylabel('Eje Y') | ||
| + | zlabel('Temperatura') | ||
| + | axis([-3 3 -1 3 0 max(T(:))]) | ||
| + | axis vis3d | ||
| + | |||
| + | |||
| + | % Máxima temperatura | ||
| + | Tmax = max(T(:)); | ||
| + | fprintf("La temperatura máxima es: %.4f\n", Tmax); | ||
| + | }} | ||
A partir del campo escalar, podemos calcular el gradiente de la temperatura <math>\nabla T</math>. Que indica la dirección en la que aumenta nuestra temperatura. |<math>\nabla T</math>| nos especificará cuanto aumenta. | A partir del campo escalar, podemos calcular el gradiente de la temperatura <math>\nabla T</math>. Que indica la dirección en la que aumenta nuestra temperatura. |<math>\nabla T</math>| nos especificará cuanto aumenta. | ||
| Línea 78: | Línea 118: | ||
Por lo tanto, el gradiente será: | Por lo tanto, el gradiente será: | ||
<center><math>\nabla T = 2(x-y)\vec i-2(x-y)\vec j</math></center> | <center><math>\nabla T = 2(x-y)\vec i-2(x-y)\vec j</math></center> | ||
| + | [[Archivo:GradienteA.jpg|700px|miniaturadeimagen|thumb|right|Figura 3. Representación del gradiente]] | ||
| + | {{matlab|codigo= | ||
| + | |||
| + | % Parámetros de la placa | ||
| + | h = 0.1; | ||
| + | r = 1:h:2; | ||
| + | t = linspace(0,pi,50); | ||
| + | |||
| + | % Mallado polar | ||
| + | [R,Th] = meshgrid(r,t); | ||
| + | |||
| + | % Conversión a coordenadas cartesianas | ||
| + | X = R .* cos(Th); | ||
| + | Y = R .* sin(Th); | ||
| + | |||
| + | % Gradiente de T | ||
| + | % ∇T = (2(x-y), -2(x-y)) | ||
| + | Gx = 2*(X - Y); | ||
| + | Gy = -2*(X - Y); | ||
| + | |||
| + | % Grafica 1: CURVAS DE NIVEL + GRADIENTE 2D | ||
| + | figure; subplot(1,2,1); mesh(X,Y,0*X); | ||
| + | hold on | ||
| + | contour(X,Y,T,20) | ||
| + | quiver(X,Y,Gx,Gy,'AutoScale','on','AutoScaleFactor',0.5) | ||
| + | |||
| + | colorbar | ||
| + | title('CURVAS DE NIVEL Y GRADIENTE','FontSize',14) | ||
| + | axis([-3 3 -0.5 3]) | ||
| + | view(0,90) | ||
| + | xlabel('Eje X') | ||
| + | ylabel('Eje Y') | ||
| + | hold off | ||
| + | |||
| + | % GRAFICA 2: SUPERFICIE + GRADIENTE 3D | ||
| + | subplot(1,2,2); | ||
| + | surf(X,Y,T) | ||
| + | shading interp | ||
| + | hold on | ||
| + | esc = 0.2; quiver3(X,Y,T,esc*Gx,esc*Gy,0*Gx,'AutoScale','off') | ||
| + | |||
| + | hold off | ||
| + | colorbar | ||
| + | title('GRADIENTE 3D','FontSize',14) | ||
| + | xlabel('Eje X') | ||
| + | ylabel('Eje Y') | ||
| + | zlabel('Temperatura') | ||
| + | axis([-3 3 -0.5 3 0 max(T(:))]) | ||
| + | axis vis3d | ||
| + | view(45,30) | ||
| + | |||
| + | % Gradiente máximo | ||
| + | Gmag = sqrt(Gx.^2 + Gy.^2); | ||
| + | Gmax = max(Gmag(:)); | ||
| + | fprintf('Máximo módulo del gradiente: %.4f\n', Gmax); | ||
| + | }} | ||
=Campo de vectores en el mallado= | =Campo de vectores en el mallado= | ||
| − | El campo de vectores <math>\vec u </math> indica el desplazamiento de los puntos del sólido. En este caso usaremos la fórmula: <center><math> \vec u = \frac{1}{5}\vec (ρ-1)ρ^2 | + | El campo de vectores <math>\vec u </math> indica el desplazamiento de los puntos del sólido. En este caso usaremos la fórmula: <center><math> \vec u = \frac{1}{5}\vec (ρ-1)ρ^2 cos(θ)\vec e_θ </math></center> |
| + | |||
| + | [[Archivo:Campo_vectoresA.jpg|600px|miniaturadeimagen|thumb|right|Figura 2. Representación del campo de vectores]] | ||
| + | {{matlab|codigo= | ||
| + | % Medio arco: radios 1 a 2, ángulos 0 a pi | ||
| + | r1 = 1; r2 = 2; | ||
| + | t1 = 0; t2 = pi; | ||
| + | |||
| + | % Mallado | ||
| + | [R,T] = meshgrid(linspace(r1,r2,20), linspace(t1,t2,40)); | ||
| + | |||
| + | % Campo en coordenadas polares | ||
| + | % u(r,theta) = (1/5)*(r-1)*r^2*cos(theta)*e_theta | ||
| + | Ur = 0.*R; % componente radial nula | ||
| + | Ut = (1/5).*(R-1).*R.^2.*sin(T); % componente tangencial | ||
| + | |||
| + | % Conversión a cartesianas | ||
| + | X = R.*cos(T); | ||
| + | Y = R.*sin(T); | ||
| + | |||
| + | % e_r = (cosθ, sinθ), e_theta = (-sinθ, cosθ) | ||
| + | Ux = Ur.*cos(T) - Ut.*sin(T); | ||
| + | Uy = Ur.*sin(T) + Ut.*cos(T); | ||
| + | |||
| + | % Dibujo del campo | ||
| + | figure; | ||
| + | quiver(X,Y,Ux,Uy,'b'); | ||
| + | axis equal; hold on; | ||
| + | |||
| + | % Contorno del medio arco | ||
| + | theta = linspace(t1,t2,200); | ||
| + | plot(r1*cos(theta), r1*sin(theta),'k','LineWidth',1.2); % semicircunferencia interior | ||
| + | plot(r2*cos(theta), r2*sin(theta),'k','LineWidth',1.2); % semicircunferencia exterior | ||
| + | plot([r1*cos(t1) r2*cos(t1)], [r1*sin(t1) r2*sin(t1)], 'k','LineWidth',1.2); % radio izquierdo | ||
| + | plot([r1*cos(t2) r2*cos(t2)], [r1*sin(t2) r2*sin(t2)], 'k','LineWidth',1.2); % radio derecho | ||
| + | |||
| + | title('Campo u(r,\theta) = (1/5)(r-1)r^2\sin(\theta)\,e_{\theta} en medio arco'); | ||
| + | xlabel('x'); ylabel('y'); | ||
| + | }} | ||
=Arco antes y después del desplazamiento= | =Arco antes y después del desplazamiento= | ||
Las imágenes muestran la representación del sólido antes y después de la deformación producida por el campo de desplazamientos <math> \vec u(ρ,θ) </math>. | Las imágenes muestran la representación del sólido antes y después de la deformación producida por el campo de desplazamientos <math> \vec u(ρ,θ) </math>. | ||
| − | + | [[Archivo:DesplazamientoA.jpg|500px|miniaturadeimagen|thumb|right|Figura 2. Representación del arco antes y después del desplazamiento ]] | |
| + | [[Archivo:Antes_despues.jpg|500px|miniaturadeimagen|thumb|right|Figura 2. Comparación]] | ||
<br /> | <br /> | ||
{{matlab|codigo= | {{matlab|codigo= | ||
| − | % | + | % Mallado |
| − | h=0.1; r=1:h:2; t=0:h:pi; | + | h = 0.1; % paso de mallado |
| − | [ | + | r = 1:h:2; % radios |
| − | + | t = 0:h:pi; % ángulos | |
| + | [R,T] = meshgrid(r,t); | ||
| − | % | + | % Coordenadas cartesianas de la placa no desplazada |
| − | + | X0 = R.*cos(T); | |
| − | + | Y0 = R.*sin(T); | |
| − | % | + | Ur = 0.*R; % componente radial nula |
| − | subplot(1, | + | Ut = (1/5).*(R-1).*R.^2.*sin(T); % componente tangencial |
| − | mesh( | + | |
| − | hold on; | + | % Conversión a cartesianas: |
| − | axis equal; axis([-3 | + | % e_r = (cosθ, sinθ), e_theta = (-sinθ, cosθ) |
| + | Ux = Ur.*cos(T) - Ut.*sin(T); | ||
| + | Uy = Ur.*sin(T) + Ut.*cos(T); | ||
| + | |||
| + | % Coordenadas desplazadas | ||
| + | Xd = X0 + Ux; | ||
| + | Yd = Y0 + Uy; | ||
| + | |||
| + | % '''GRAFICAS''' | ||
| + | figure; | ||
| + | |||
| + | % 1. Placa no desplazada | ||
| + | subplot(1,3,1); mesh(X0,Y0,0*X0,'EdgeColor',[0 0.7 0],'FaceColor','none'); | ||
| + | view(2); axis equal; axis([-3 3 -1 3]); title('Placa no desplazada'); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | |||
| + | % 2. Placa desplazada | ||
| + | subplot(1,3,2); mesh(Xd,Yd,0*Xd,'EdgeColor',[0.8 0 0],'FaceColor','none'); | ||
| + | view(2); axis equal; axis([-3 3 -1 3]); title('Placa desplazada'); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | |||
| + | % 3. Comparación | ||
| + | subplot(1,3,3); hold on; | ||
| + | mesh(X0,Y0,0*X0,'EdgeColor',[0 0.7 0],'FaceColor','none'); % original | ||
| + | mesh(Xd,Yd,0*Xd,'EdgeColor',[0.8 0 0],'FaceColor','none'); % desplazada | ||
| + | hold off; view(2); axis equal; axis([-3 3 -1 3]); title('Desplazamiento de la placa'); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); | ||
| − | |||
| − | |||
| − | |||
| − | |||
}} | }} | ||
=Divergencia del campo de vectores= | =Divergencia del campo de vectores= | ||
| + | La divergencia mide la tasa de flujo saliente o entrante en un punto. Nos permite saber si un campo vectorial está comportándose como una "fuente" (flujo saliente) o como un "sumidero" (flujo entrante) en esa región. | ||
==¿Qué es la divergencia?== | ==¿Qué es la divergencia?== | ||
| + | Sea <math>\vec u(ρ,θ)</math>: 𝐷 ⊂ ℝ3V un campo vectorial, expresado en la base cilíndrica. Y siendo la fórmula de la divergencia en coordenadas cilídricas: | ||
| + | <center><math>\nabla ·\vec{u} = \frac{1}{\rho} (\frac{\partial }{\partial \rho} (\rho u_\rho)+\frac{\partial }{\partial θ} (u_θ)+\frac{\partial }{\partial z} (\rho u_z))</math></center> | ||
| + | <br/> | ||
| + | El campo de desplazamientos es: | ||
| + | <center><math>\vec{u} = \frac{1}{5}(\rho-1)\rho^2cos\theta </math> </center> | ||
| + | Una vez operado obtenemos | ||
| + | <center><math>\nabla ·\vec{u} =\frac{\rho(\rho-1)cos\theta }{5}</math> </center> | ||
| + | |||
==¿Qué puntos tienen mayor divergencia? ¿Por qué?== | ==¿Qué puntos tienen mayor divergencia? ¿Por qué?== | ||
| + | Con el resultado del apartado anterior introducido en Matlab se puede observar que los puntos con máximos de divergencia son: | ||
| + | Máxima divergencia POSITIVA: | ||
| + | div u = 0.40000 en (x,y) = (2.00000, 0.00000) | ||
| + | Máxima divergencia NEGATIVA: | ||
| + | div u = -0.39965 en (x,y) = (-1.99827, 0.08316) | ||
| + | |||
| + | La divergencia analítica del campo es ∇⋅u=51(ρ2−ρ)cosθ. Físicamente, esto indica una expansión volumétrica en la mitad derecha del arco (cosθ>0) y una compresión en la mitad izquierda (cosθ<0). La deformación es nula en el radio interior y crece cuadráticamente con el radio, alcanzando sus valores teóricos máximos (±0.4) en los extremos exteriores (±2,0). Las ligeras desviaciones en el resultado numérico son atribuibles al error de discretización del mallado (h=0.1). | ||
| + | |||
| + | [[Archivo:DivergenciaA.jpg|700px|miniaturadeimagen|thumb|right|Figura 2. Representación de la divergencia]] | ||
{{matlab|codigo= | {{matlab|codigo= | ||
| − | % | + | ''% Mallado |
| − | h=0.1; r=1:h:2; t=0:h:pi; | + | h = 0.1; % paso de mallado |
| − | [RR,TT]=meshgrid(r,t); | + | r = 1:h:2; % radios |
| − | + | t = 0:h:pi; % ángulos | |
| + | [RR,TT] = meshgrid(r,t); | ||
| + | |||
| + | % Coordenadas cartesianas del medio arco | ||
| + | X = RR.*cos(TT); | ||
| + | Y = RR.*sin(TT);'' | ||
| + | |||
| + | % Divergencia del campo | ||
| + | % u = (1/5)*(rho-1)*rho^2*cos(theta)*e_theta | ||
| + | % => div u = (rho*(rho-1)*cos(theta))/5 | ||
| + | DIV = (RR.*(RR-1).*cos(TT))/5; | ||
| + | |||
| + | figure; | ||
| + | |||
| + | % GRAFICA 1: DIVERGENCIA EN 2D | ||
| + | subplot(1,2,1); surf(X,Y,DIV,'EdgeColor','interp','FaceColor','interp'); view(2); | ||
| + | axis equal; axis([-3 3 -1 3]); xlabel('Eje X'); ylabel('Eje Y'); title('Divergencia 2D'); | ||
| + | colorbar; | ||
| + | |||
| + | % GRAFICO 2: DIVERGENCIA 3D | ||
| + | subplot(1,2,2); surf(X,Y,DIV,'EdgeColor','interp','FaceColor','interp'); view(3); axis vis3d; xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z'); | ||
| + | title('Divergencia 3D'); colorbar; | ||
| + | |||
| + | % Máxima divergencia positiva | ||
| + | [maxDiv, idxMax] = max(DIV(:)); | ||
| + | xMax = X(idxMax); | ||
| + | yMax = Y(idxMax); | ||
| − | + | % Máxima divergencia negativa | |
| + | [minDiv, idxMin] = min(DIV(:)); | ||
| + | xMin = X(idxMin); | ||
| + | yMin = Y(idxMin); | ||
| − | + | fprintf('Máxima divergencia POSITIVA:\n'); | |
| − | + | fprintf(' div u = %.5f en (x,y) = (%.5f, %.5f)\n', maxDiv, xMax, yMax); | |
| − | + | fprintf('Máxima divergencia NEGATIVA:\n'); | |
| − | + | fprintf(' div u = %.5f en (x,y) = (%.5f, %.5f)\n', minDiv, xMin, yMin); | |
| − | |||
}} | }} | ||
=Rotacional del campo de vectores |∇ × ⃗𝑢|= | =Rotacional del campo de vectores |∇ × ⃗𝑢|= | ||
==¿Qué es el rotacional?== | ==¿Qué es el rotacional?== | ||
| + | Sea <math>\nabla×\vec u(ρ,θ)</math> el rotacional de un campo de desplazamientos <math>\vec u </math>, se expresa como: | ||
| + | <center><math>\nabla×\vec u(ρ,θ) = \frac{1}{\rho}\begin{vmatrix} \vec g_ρ & \vec g_θ & \vec g_z \\ \frac{\partial}{\partial ρ} & \frac{\partial}{\partial θ} & \frac{\partial}{\partial z} \\ \vec v_ρ & \vec ρv_θ & \vec v_z \end{vmatrix}</math></center> | ||
| + | El rotacional de un campo vectorial mide su tendencia a rotar en un punto. | ||
| + | La cual desarrollada, queda: <center><math>\nabla \times \vec{U} =\left(\frac{1}{\rho}\frac{\partial U_{z}}{\partial \theta}- \frac{\partial U_{\theta}}{\partial z}\right)\vec{e}_{\rho}\;+\;\left(\frac{\partial U_{\rho}}{\partial z}- \frac{\partial U_{z}}{\partial \rho}\right)\vec{e}_{\theta}\;+\;\frac{1}{\rho}\left[\frac{\partial}{\partial \rho}(\rho U_{\theta})- \frac{\partial U_{\rho}}{\partial \theta}\right]\vec{e}_{z}</math></center> | ||
| + | <br /> | ||
| + | |||
| + | Aplicando el campo de desplazamientos: <center><math> | ||
| + | \nabla×\vec u(ρ,θ) = \frac{1}{\rho} \begin{vmatrix}\vec{e}_{\rho } & \vec{e}_{\theta } & \vec{e}_{z }\\ \frac{\partial }{\partial \rho }& \frac{\partial }{\partial \theta } & \frac{\partial }{\partial z }\\0 & \frac{1}{5}(\rho-1)\rho^2cos\theta & 0 \\\end{vmatrix}=\frac{ \rho(4\rho - 3)}{5} \cos\theta \vec{e}_{z} | ||
| + | </math></center> | ||
| + | <br /> | ||
| + | |||
| + | Los puntos con mayor rotacional son: | ||
| + | Máximo rotacional (componente z POSITIVA): | ||
| + | w_z = 2.00000 en (x,y) = (2.00000, 0.00000) | ||
| + | Mínimo rotacional (componente z NEGATIVA): | ||
| + | w_z = -1.99827 en (x,y) = (-1.99827, 0.08316) | ||
| + | |||
| + | El análisis de la divergencia del campo de desplazamientos, definida analíticamente como un quinto del producto entre la diferencia cuadrática del radio y el coseno del ángulo, revela un comportamiento físico dual en la placa. Los resultados numéricos muestran una expansión volumétrica máxima de 0.4 en el extremo derecho del arco, correspondiente a las coordenadas (2, 0), donde el coseno es positivo y el radio es máximo, y una compresión volumétrica máxima de aproximadamente -0.4 en el extremo izquierdo, correspondiente teóricamente a (-2, 0), donde el coseno es negativo. La deformación volumétrica es nula tanto en el radio interior como en la clave del arco. Por otro lado, el rotacional, que cuantifica la vorticidad o giro local del material, sigue una distribución dependiente del coseno del ángulo y creciente con el radio. Se observa un rotacional máximo positivo de 2.0 en el extremo derecho (2, 0), indicando un giro antihorario intenso, y un rotacional máximo negativo de aproximadamente -1.99 en el extremo izquierdo, indicando un giro horario. Las leves desviaciones en las coordenadas de los mínimos respecto a los valores teóricos geométricos (-2, 0) son atribuibles exclusivamente a la discretización del mallado con paso 0.1, que impide que un nodo coincida exactamente con el ángulo pi. | ||
| + | |||
| + | |||
==¿Qué puntos tiene un mayor rotacional?== | ==¿Qué puntos tiene un mayor rotacional?== | ||
| + | [[Archivo:RotacionalA.jpg|700px|thumb|right|Figura. Representación del rotacional]] | ||
| + | {{matlab|codigo= | ||
| + | % Mallado del medio arco | ||
| + | h = 0.1; % paso de mallado | ||
| + | r = 1:h:2; % radios | ||
| + | t = 0:h:pi; % ángulos | ||
| + | [RR,TT] = meshgrid(r,t); | ||
| + | |||
| + | % Coordenadas cartesianas | ||
| + | X = RR.*cos(TT); | ||
| + | Y = RR.*sin(TT); | ||
| + | |||
| + | %ROTACIONAL | ||
| + | % u = (1/5)*(rho-1)*rho^2*cos(theta)*e_theta | ||
| + | % => (nabla x u)_z = rho*(4*rho - 3)*cos(theta)/5 | ||
| + | ROTz = (RR.*(4*RR - 3).*cos(TT))/5; | ||
| + | |||
| + | figure; | ||
| + | % GRAFICA 1: ROTACIONAL 2D | ||
| + | subplot(1,2,1); surf(X,Y,ROTz,'EdgeColor','interp','FaceColor','interp'); view(2);axis equal; axis([-3 3 -1 3]); xlabel('Eje X'); ylabel('Eje Y');title('Rotacional 2D (\omega_z)');colorbar; | ||
| + | |||
| + | % GRAFICA 2: ROTACIONAL 3D | ||
| + | subplot(1,2,2); surf(X,Y,ROTz,'EdgeColor','interp','FaceColor','interp'); view(3); axis vis3d; xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z'); | ||
| + | title('Rotacional 3D (\omega_z)'); colorbar; | ||
| + | |||
| + | %PUNTOS DE ROTACIONAL MÁXIMO | ||
| + | % Máximo (más positivo) | ||
| + | [maxRot, idxMax] = max(ROTz(:)); | ||
| + | xMax = X(idxMax); | ||
| + | yMax = Y(idxMax); | ||
| + | |||
| + | % Mínimo (más negativo) | ||
| + | [minRot, idxMin] = min(ROTz(:)); | ||
| + | xMin = X(idxMin); | ||
| + | yMin = Y(idxMin); | ||
| + | |||
| + | fprintf('Máximo rotacional (componente z POSITIVA):\n'); | ||
| + | fprintf(' w_z = %.5f en (x,y) = (%.5f, %.5f)\n', maxRot, xMax, yMax); | ||
| + | |||
| + | fprintf('Mínimo rotacional (componente z NEGATIVA):\n'); | ||
| + | fprintf(' w_z = %.5f en (x,y) = (%.5f, %.5f)\n', minRot, xMin, yMin); | ||
| + | |||
| + | }} | ||
=TENSIONES= | =TENSIONES= | ||
| Línea 154: | Línea 421: | ||
<center> <math>\frac{\partial \vec{u}}{\partial z}=0</math></center> | <center> <math>\frac{\partial \vec{u}}{\partial z}=0</math></center> | ||
| − | Por | + | Por tanto, la matriz <math>\nabla{\vec u(ρ,θ)}</math> es: |
<center><math>\triangledown \vec{u}(\rho,\theta) = \begin{pmatrix} | <center><math>\triangledown \vec{u}(\rho,\theta) = \begin{pmatrix} | ||
0 & - \frac{1}{5}(\rho-1)\rho sen\theta& 0 \\ | 0 & - \frac{1}{5}(\rho-1)\rho sen\theta& 0 \\ | ||
| − | \frac{1}{5}(3\rho^2 -2\rho)sen\theta | + | \frac{1}{5}(3\rho^2 -2\rho)sen\theta & \frac{1}{5}(\rho-1)\rho cos\theta & 0 \\ |
0 & 0 & 0 \\ | 0 & 0 & 0 \\ | ||
\end{pmatrix} </math></center> | \end{pmatrix} </math></center> | ||
| − | =Tensiones tangenciales | + | Y su traspuesta <math>(\nabla{\vec u(ρ,θ)})^t</math>: |
| + | <center><math>\triangledown \vec{u}(\rho,\theta)^{t} = \begin{pmatrix} | ||
| + | 0 & \frac{1}{5}(3\rho^2 -2\rho)sen\theta & 0 \\ | ||
| + | - \frac{1}{5}(\rho-1)\rho sen\theta& \frac{1}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & 0 \\ | ||
| + | \end{pmatrix}</math></center> | ||
| + | <br /> | ||
| + | Por lo que el tensor deformaciones quedaría como: | ||
| + | <center><math>\epsilon (\vec{u}(\rho ,\theta ))=\frac{\triangledown \vec{u}(\rho, \theta )+ \triangledown \vec{u} (\rho ,\theta)^{T}}{2}=\begin{pmatrix} | ||
| + | 0 & \frac{1}{10}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{10}(2\rho -1)\rho sen\theta & \frac{1}{5}(\rho -1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & 0 \\ | ||
| + | \end{pmatrix}</math></center> | ||
| + | <br /> | ||
| + | |||
| + | ==Tensor de tensiones== | ||
| + | Para hallar el tensor de tensiones, de fórmula <math>\sigma = λ \nabla · \vec u I + 2µ \epsilon </math>, usaremos los coeficientes de Lamé, el gradiente del campo de desplazamientos y el tensor de deformaciones calculado anteriormente. | ||
| + | <br /> | ||
| + | <center><math>\sigma =λ\begin{pmatrix} | ||
| + | \frac{1}{5}(\rho-1)\rho cos\theta & 0 & 0 \\ | ||
| + | 0 & \frac{1}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\ | ||
| + | \end{pmatrix} + | ||
| + | µ\begin{pmatrix} | ||
| + | 0 & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{5}(2\rho -1)\rho sen\theta & \frac{2}{5}(\rho -1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & 0 \\ | ||
| + | \end{pmatrix} = | ||
| + | </math></center> | ||
| + | <br /> | ||
| + | Tomando como valores de λ y de µ = 1, <math>\sigma</math> es: | ||
| + | <center><math> | ||
| + | \begin{pmatrix} | ||
| + | \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\ | ||
| + | \end{pmatrix} | ||
| + | </math></center> | ||
| + | <br /> | ||
| + | |||
| + | ==Tensiones normales== | ||
| + | A continuación calcularemos las tensiones ortogonales al plano de la placa, definido por los parámetros <math>\rho</math> y <math>\theta</math>. | ||
| + | |||
| + | Las tensiones normales en la dirección que marca el eje <math>\overrightarrow e_{\rho} </math>, es decir, <math>\overrightarrow e_{\rho} \cdot σ \cdot \overrightarrow e_{\rho}</math> son: | ||
| + | <br/> | ||
| + | <br/> | ||
| + | <math>\overrightarrow e_{\rho} \cdot σ \cdot \overrightarrow e_{\rho}=\begin{pmatrix} 1\\0\\0 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 1\\0\\0 \end{pmatrix}=\frac{1}{5}(\rho-1)\rho cos\theta</math> | ||
| + | <br/> | ||
| + | <br/> | ||
| + | Las tensiones normales en la dirección que marca el eje eje<math>\overrightarrow e_{\theta} </math>, es decir <math>\overrightarrow e_{\theta} \cdot σ \cdot \overrightarrow e_{\theta}</math> son: | ||
| + | <br/> | ||
| + | <br/> | ||
| + | <math>\overrightarrow e_{\theta} \cdot σ \cdot \overrightarrow e_{\theta}=\begin{pmatrix} 0\\1\\0 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 0\\1\\0 \end{pmatrix}=\frac{3}{5}(\rho-1)\rho cos\theta</math> | ||
| + | <br/> | ||
| + | <br/> | ||
| + | Las tensiones normales en la dirección que marca el eje eje<math>\overrightarrow e_{z} </math>, es decir <math>\overrightarrow e_{z} \cdot σ \cdot \overrightarrow e_{z}</math> son: | ||
| + | <br/> | ||
| + | <br/> | ||
| + | <math>\overrightarrow e_{z} \cdot σ \cdot \overrightarrow e_{z}=\begin{pmatrix} 0\\0\\1 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\ | ||
| + | \frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\ | ||
| + | 0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 0\\0\\1 \end{pmatrix}=\frac{1}{5}(\rho-1)\rho cos\theta </math> | ||
| + | <br/> | ||
| + | <br/> | ||
| + | A continuación representaremos cada una de las direcciones que toman las tensiones normales según el eje. | ||
| + | [[Archivo:Tensiones_normalesA.jpg|700px|thumb|right|Figura. Representación de las teniones normales]] | ||
| + | {{matlab|codigo= | ||
| + | %Mallado | ||
| + | r = 1:0.2:2; % radios | ||
| + | t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco) | ||
| + | [rr,tt] = meshgrid(r,t); | ||
| + | |||
| + | % Coordenadas cartesianas del medio arco | ||
| + | xx = rr.*cos(tt); | ||
| + | yy = rr.*sin(tt); | ||
| + | |||
| + | %TENSIOES NORMALES EN CILÍNDRICAS | ||
| + | sigma_rr = (1/5).*(rr-1).*rr.*cos(tt); % e_r · σ · e_r | ||
| + | sigma_tt = (3/5).*(rr-1).*rr.*cos(tt); % e_θ · σ · e_θ | ||
| + | sigma_zz = (1/5).*(rr-1).*rr.*cos(tt); % e_z · σ · e_z | ||
| + | |||
| + | % TENSIÓN σ_{θ} EN CARTESIANAS | ||
| + | % Dirección e_theta = (-sinθ, cosθ) | ||
| + | Txx = -sin(tt).*sigma_tt; | ||
| + | Tyy = cos(tt).*sigma_tt; | ||
| + | |||
| + | figure; | ||
| + | |||
| + | % GRÁFICA 1: TENSIONES NORMALES | ||
| + | subplot(1,2,1); mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none'); view(2); hold on; | ||
| + | quiver(xx,yy,Txx,Tyy,'Color',[0 0.6 0.9]); hold off; | ||
| + | axis equal; axis([-3,3,-1,3]);title('Tensiones normales \sigma_{\theta\theta}'); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | |||
| + | % GRÁFICA 2: DEFORMACIÓN | ||
| + | subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2); | ||
| + | axis equal; axis([-3,3,0,5]);title('Deformaciones por tensiones normales en dirección e_\theta'); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | }} | ||
| + | |||
| + | =Tensiones tangenciales= | ||
| + | Las tensiones tangenciales son las que actúan dentro del plano de la placa, es decir, paralelas a ella. Por tanto, son componentes ortogonales a las tensiones normales. Para poder calcularlas usamos el tensor tangencial: <math> T_t= (\vec σ·\vec n - \vec n\otimes\vec n </math>·σ)<math>\vec t</math>. Donde <math>\vec σ·\vec n</math> es el vector total de tensión y <math>\vec n\otimes\vec n </math>·σ es la parte normal del vector tracción <math>T_n </math>. | ||
| + | ==Respecto al plano ortogonal con eje <math>\vec e_ρ </math>== | ||
| + | En este caso, las tensiones tangenciales son las componentes en las direcciones <math>\vec e_\theta </math> y <math>\vec e_z </math>, es decir: | ||
| + | <br/> | ||
| + | <br/> | ||
| + | |<math>σ·\vec e_ρ-(\vec e_ρ·(σ·\vec e_ρ))\vec e_ρ | = \left| \begin{pmatrix} | ||
| + | (\frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta) \\ | ||
| + | \end{pmatrix} \cdot \begin{pmatrix} 1\\ 0 \\ 0 \end{pmatrix} - \frac{1}{5}(\rho-1)\rho cos\theta \cdot \begin{pmatrix} 1\\ 0 \\ 0 \end{pmatrix} \right| = | ||
| + | </math> | ||
| + | <br/> | ||
| + | <center><math> \frac{1}{5}(2\rho -1)\rho sen\theta</math></center> | ||
| + | [[Archivo:Tension_tg_p.jpg|700px|thumb|right|Figura. Representación de las tensiones tangenciales]] | ||
| + | {{matlab|codigo= | ||
| + | %Mallado | ||
| + | r = 1:0.2:2; % radios | ||
| + | t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco) | ||
| + | [rr,tt] = meshgrid(r,t); | ||
| + | |||
| + | % Coordenadas cartesianas del medio arco | ||
| + | xx = rr.*cos(tt); | ||
| + | yy = rr.*sin(tt); | ||
| + | |||
| + | % TENSIONES TANGENCIALES en el plano normal a e_rho | ||
| + | tau_theta = (1/5).*(2*rr - 1).*rr.*sin(tt); | ||
| + | |||
| + | % Dirección e_theta = (-sinθ, cosθ) | ||
| + | Ttx = -sin(tt).*tau_theta; % componente x del vector tangencial | ||
| + | Tty = cos(tt).*tau_theta; % componente y del vector tangencial | ||
| + | |||
| + | figure; | ||
| + | % GRAFICA 1: TENSIONES TANGENCIALES | ||
| + | subplot(1,2,1); mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none'); view(2); hold on; | ||
| + | quiver(xx,yy,Ttx,Tty,'Color',[0 0.6 0.9]); axis equal; axis([-3,3,-1,3]); | ||
| + | xlabel('Eje X'); ylabel('Eje Y'); title('Tensiones tangenciales (plano normal a e_\rho)'); | ||
| + | |||
| + | % GRAFICA 2: DEFORMACIONES | ||
| + | subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2); | ||
| + | axis equal; axis([-3,3,0,5]);xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | title('Deformaciones por tensiones tangenciales'); | ||
| + | |||
| + | }} | ||
| + | |||
| + | |||
==¿Dónde son mayores?== | ==¿Dónde son mayores?== | ||
| + | {{matlab|codigo= | ||
| + | tau_abs = abs(tau_theta); | ||
| + | [maxTau, idxMaxTau] = max(tau_abs(:)); | ||
| + | xMaxTau = xx(idxMaxTau); | ||
| + | yMaxTau = yy(idxMaxTau); | ||
| + | |||
| + | fprintf('Máxima tensión tangencial |tau| = %.5f en (x,y) = (%.5f, %.5f)\n', maxTau, xMaxTau, yMaxTau); | ||
| + | }} | ||
| + | Analizando la función, el valor depende del seno del ángulo y cuadráticamente del radio. | ||
| + | El valor máximo obtenido es 1.2000. Este se encuentra en las coordenadas (0, 2). | ||
| + | La tensión es máxima en la clave del arco (θ=π/2, donde sinθ=1) y en la fibra exterior (ρ=2, donde el término radial es máximo). Esto indica que la parte superior externa del arco es la zona más crítica a cortante. | ||
| + | |||
| + | |||
| + | |||
==Comparación con puntos de mayor deformación del mallado== | ==Comparación con puntos de mayor deformación del mallado== | ||
| + | {{matlab|codigo= | ||
| + | %COMPARACIÓN CON PUNTOS | ||
| + | % Magnitud del desplazamiento aplicado al mallado | ||
| + | desp = sqrt((escala*Ttx).^2 + (escala*Tty).^2); | ||
| + | [maxDesp, idxMaxDesp] = max(desp(:)); | ||
| + | |||
| + | xMaxDesp = xx(idxMaxDesp); | ||
| + | yMaxDesp = yy(idxMaxDesp); | ||
| + | |||
| + | fprintf('Máxima deformación (desplazamiento) |u| = %.5f en (x,y) = (%.5f, %.5f)\n', ... | ||
| + | maxDesp, xMaxDesp, yMaxDesp); | ||
| + | |||
| + | if idxMaxDesp == idxMaxTau | ||
| + | fprintf('El punto de máxima tensión tangencial COINCIDE con el de máxima deformación.\n'); | ||
| + | else | ||
| + | fprintf('El punto de máxima tensión tangencial NO coincide exactamente con el de máxima deformación.\n'); | ||
| + | end | ||
| + | }} | ||
| + | Al calcular la magnitud del desplazamiento ∣u∣, observamos que su máximo es 0.8000, localizado también en (0, 2). | ||
| + | Existe una coincidencia exacta entre el punto de mayor desplazamiento y el punto de mayor tensión tangencial. Ambos ocurren en la clave del arco en su cara exterior. Esto sugiere que, en este modelo de carga, la zona de mayor movimiento es también la que sufre mayor riesgo de fallo por cizalladura. | ||
| + | |||
| + | =Tensiones tangenciales respecto al plano ortogonal <math>\vec e_\theta </math>= | ||
| + | <br/> | ||
| + | <br/> | ||
| + | |<math>σ·\vec e_\theta-(\vec e_\theta·(σ·\vec e_\theta))\vec e_\theta | = \left| \begin{pmatrix} | ||
| + | (\frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta) \\ | ||
| + | \end{pmatrix} \cdot \begin{pmatrix} 0\\ \frac{1}{\rho} \\ 0 \end{pmatrix} - \frac{3}{5}(\rho-1)\rho cos\theta \cdot \begin{pmatrix} 0\\ \frac{1}{\rho} \\ 0 \end{pmatrix} \right| = | ||
| + | </math> | ||
| + | <br/> | ||
| + | <center><math> \frac{1}{5}(2\rho -1)\rho sen\theta</math></center> | ||
| + | |||
| + | |||
| + | [[Archivo:Tension_tg_t.jpg|700px|thumb|right|Figura. Representacion tensiones tangenciales]] | ||
| + | {{matlab|codigo= | ||
| + | % Mallado del medio arco | ||
| + | r = 1:0.2:2; % radios | ||
| + | t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco) | ||
| + | [rr,tt] = meshgrid(r,t); | ||
| + | |||
| + | % Coordenadas cartesianas del medio arco | ||
| + | xx = rr.*cos(tt); | ||
| + | yy = rr.*sin(tt); | ||
| + | |||
| + | % TENSIONES TANGENCIALES respecto al plano ortogonal a e_theta | ||
| + | tau_rho = (1/5).*(2*rr - 1).*rr.*sin(tt); | ||
| + | |||
| + | % Dirección e_rho = (cosθ, sinθ) | ||
| + | Ttx = cos(tt).*tau_rho; % componente x del vector tangencial | ||
| + | Tty = sin(tt).*tau_rho; % componente y del vector tangencial | ||
| + | |||
| + | figure; | ||
| + | |||
| + | % GRAFICA 1. TENSIONES TANGENCIALES | ||
| + | subplot(1,2,1);mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2); hold on; | ||
| + | quiver(xx,yy,Ttx,Tty,'Color',[0 0.6 0.9]);axis equal; axis([-3,3,-1,3]);xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | title('Tensiones tangenciales (plano normal a e_\theta)'); | ||
| + | |||
| + | % GRAFICA 2: DEFORMACIONES | ||
| + | subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2);axis equal; axis([-3,3,0,5]);xlabel('Eje X'); ylabel('Eje Y'); | ||
| + | title('Deformaciones por tensiones tangenciales (plano normal a e_\theta)'); | ||
| − | |||
==¿Dónde son mayores?== | ==¿Dónde son mayores?== | ||
| + | tau_abs = abs(tau_rho); % magnitud de la tensión tangencial | ||
| + | [maxTau, idxMaxTau] = max(tau_abs(:)); % máximo absoluto | ||
| + | xMaxTau = xx(idxMaxTau); | ||
| + | yMaxTau = yy(idxMaxTau); | ||
| + | |||
| + | fprintf('Máxima tensión tangencial |tau| = %.5f en (x,y) = (%.5f, %.5f)\n', ... | ||
| + | maxTau, xMaxTau, yMaxTau); | ||
| + | |||
| + | % Marcar este punto en las dos figuras | ||
| + | subplot(1,2,1); hold on; | ||
| + | plot3(xMaxTau,yMaxTau,0,'ro','MarkerSize',8,'MarkerFaceColor','r'); | ||
| + | |||
| + | subplot(1,2,2); hold on; | ||
| + | plot3(xMaxTau + escala*Ttx(idxMaxTau), ... | ||
| + | yMaxTau + escala*Tty(idxMaxTau), ... | ||
| + | 0,'ro','MarkerSize',8,'MarkerFaceColor','r'); | ||
==Comparación con puntos de mayor deformación del mallado== | ==Comparación con puntos de mayor deformación del mallado== | ||
| + | desp = sqrt((escala*Ttx).^2 + (escala*Tty).^2); | ||
| + | [maxDesp, idxMaxDesp] = max(desp(:)); | ||
| + | |||
| + | xMaxDesp = xx(idxMaxDesp); | ||
| + | yMaxDesp = yy(idxMaxDesp); | ||
| + | |||
| + | fprintf('Máxima deformación (desplazamiento) |u| = %.5f en (x,y) = (%.5f, %.5f)\n', ... | ||
| + | maxDesp, xMaxDesp, yMaxDesp); | ||
| + | |||
| + | if idxMaxDesp == idxMaxTau | ||
| + | fprintf('El punto de máxima tensión tangencial COINCIDE con el de máxima deformación.\n'); | ||
| + | else | ||
| + | fprintf('El punto de máxima tensión tangencial NO coincide exactamente con el de máxima deformación.\n'); | ||
| + | end | ||
| + | }} | ||
=Masa de la placa= | =Masa de la placa= | ||
| + | Teniendo en cuenta que la densidad del material viene dada por <math>d(\rho, \theta) = 1 + e^{\rho^2 \cos \theta}</math>, se calcula la masa del mismo aplicando la siguiente fórmula. | ||
| + | |||
| + | <center><math> Masa = \int_{u}^{u}\int_{v}^{v}f(\vec r(u,v)) * |(\vec r´_{u})\times(\vec r´_{v})|dudv </math></center> | ||
| + | |||
| + | Parametrizamos la superficie r(u,v) que representa el arco longitudinal, expresamos las componentes <math>\vec r´_{u}</math>; <math>\vec r´_{v}</math> y calculamos el módulo del producto vectorial entre ambas. | ||
| + | |||
| + | <center><math> r(u,v)= (\rho=u , \theta=v , z=0)</math></center><br /> | ||
| + | |||
| + | <center><math> \vec r´_{u}= \frac{\partial ρ}{\partial u}\vec {e\rho} + \rho*\frac{\partial θ}{\partial u}\vec {e\theta}+\frac{\partial z}{\partial u}\vec {ez} = 1\vec {e\rho} + 0\rho\vec {e\theta} + 0\vec {ez} = (1,0,0) = \vec {e\rho} </math></center><br /> | ||
| + | |||
| + | <center><math> \vec r´_{v} = \frac{\partial ρ}{\partial v}\vec {e\rho} + \rho*\frac{\partial θ}{\partial v}\vec {e\theta}+\frac{\partial z}{\partial v}\vec {e_z} = 0\vec {e\rho} + \rho\vec {e\theta} + 0\vec {ez}=(0,u,0)=u\vec {eθ} </math></center><br /> | ||
| + | |||
| + | <center><math> \vec r´_{u} × \vec r´_{v} = \begin{vmatrix} \vec e_ρ & \vec e_θ & \vec e_z \\ 1 & 0 & 0 \\ 0 & u & 0 \end{vmatrix} = 0\vec {e\rho} + 0\rho\vec {e\theta} + u\vec {ez} = (0,0,u) </math></center> | ||
| + | <br /> | ||
| + | |||
| + | <center><math> |\vec r´_{u} × \vec r´_{v}| = u </math></center><br /> | ||
| + | |||
| + | De manera que la masa del material es: | ||
| + | |||
| + | <center><math> Masa = \int_{0}^{π}\int_{1}^{2}(1 + e^{u^2 cos v}) * (u) dudv = \int_{0}^{π}\int_{1}^{2} (u) dudv + \int_{0}^{π}\int_{1}^{2} u*e^{u^2 cosv} dudv = \frac{3π}{2} + \int_{0}^{π}\int_{1}^{2} u*e^{u^2 cosv} dudv </math></center> | ||
| + | |||
| + | La resolución de la integral resultante se ha aproximado a través del método del rectángulo con el siguiente código de Matlab. | ||
| + | {{matlab|codigo= | ||
| + | % Límites | ||
| + | rho1 = 1; rho2 = 2; | ||
| + | th1 = 0; th2 = pi; | ||
| + | |||
| + | % Integrando: densidad * Jacobiano (rho) | ||
| + | integrand = @(rho,theta) (1 + exp(rho.^2.*cos(theta))).*rho; | ||
| + | |||
| + | % Masa de la placa | ||
| + | M = integral2(integrand, rho1, rho2, th1, th2); | ||
| + | |||
| + | fprintf('Masa de la placa = %.10f\n', M); | ||
| + | }} | ||
| + | |||
| + | Por tanto, M= 24,64 | ||
=Interpretación con ejemplo práctico= | =Interpretación con ejemplo práctico= | ||
| + | En este trabajo se ha estudiado la respuesta elástica de una sección longitudinal de un arco comprendido entre los radios 1 y 2, que ha estado sometido a un campo de desplazamientos <math> \vec u = \frac{1}{5}\vec (ρ-1)ρ^2 sen(θ)\vec e_θ </math> y se ha analizado la distribución de la temperatura <math>T(x,y)=(x-y)^2 </math>. | ||
| + | |||
| + | Por otro lado, si interpretamos el trabajo desde un enfoque práctico, observamos que existe una aplicación real. Suponemos que el dominio es una parte de la corteza terrestre y que el desplazamiento es provocado por las ondas S en terremotos. Esto quiere decir, que se interpreta el campo de deslizamientos como una onda sísmica de tipo S, que se propaga en una parte de la corteza terrestre representada por el arco de radios 1 y 2. | ||
| + | |||
| + | {| align="center" style="border:1px solid #aaa; padding:5px; width:450px;" | ||
| + | | [[Archivo:Propagación_ondas.png|450px]] | ||
| + | |- | ||
| + | | style="text-align:center; font-style:italic;" | Propagación de ondas sísmicas en el terreno (forma de nuestro arco longitudinal) | ||
| + | |} | ||
| + | |||
| + | Las ondas S producen desplazamientos tangenciales, dando lugar a deformaciones de cizalla. Esto coincide con el comportamiento del campo de deslizamientos, que desplaza cada punto únicamente en su dirección tangencial, moviendo el material sin cambiar su volumen de manera uniforme. | ||
| + | El desplazamiento está dirigido según 𝑒𝜃, luego describe un movimiento tangencial (de tipo cizalla) alrededor del origen. El factor (𝜌 − 1) anula el desplazamiento en la frontera interior (𝜌 = 1, por lo que la deformación es nula en el borde interno y aumenta hacia el exterior. La dependencia sin𝜃 introduce una variación angular: los desplazamientos son nulos en 𝜃=0,𝜋 y máximos en 𝜃=𝜋/2,3𝜋/2. | ||
| + | |||
| + | [[Archivo:OndaS_.gif|500px|thumb|right|Comportamiento onda S en la superficie]] | ||
| + | |||
| + | La divergencia calculada muestra las zonas de la corteza terrestre donde el terreno se expande o comprime. En este caso, las ondas S no generan grandes cambios volumétricos, pues el modelo presenta pequeñas variaciones que pueden interpretarse como ajustes locales del terreno al propagarse la perturbación. | ||
| + | |||
| + | El rotacional representa las zonas donde el material experimenta giro debido al paso de la onda. Esta información permite ver en qué direcciones el terreno tiende a girar durante las vibraciones de estas ondas sísmicas. | ||
| + | |||
| + | Las tensiones normales y tangenciales obtenidas se pueden interpretar como las fuerzas internas que se desarrollan por debajo del terreno como respuesta al desplazamiento. Estas tensiones suelen ser las causantes de la formación de grietas o incluso fallas, cuando superan la resistencia del material. Las tensiones más elevadas se encuentran en la parte más alejada del dominio, donde los desplazamientos son mayores. | ||
| + | |||
| + | Finalmente, se puede observar que el modelo trabajado puede interpretarse como una versión simplificada del comportamiento de la corteza terrestre durante el paso de una onda sísmica de tipo S. Dentro de que está idealizado, nos permite entender cómo se distribuyen los desplazamientos, las tensiones y deformaciones en el terreno ante las vibraciones sísmicas. | ||
| + | |||
| + | =Póster= | ||
| + | |||
| + | Se muestra una fotografía del póster realizado, además de un link para poder descargarlo y verlo con mayor detalle a una mejor resolución. | ||
| + | |||
| + | [[Archivo:MALLADO2D_GRUPO63.pdf|200px|thumb|left|Póster del artículo resumido]] | ||
Revisión actual del 10:59 11 dic 2025
| Trabajo realizado por estudiantes | |
|---|---|
| Título | Mallado 2D de Arco I. Grupo 63 |
| Asignatura | Teoría de Campos |
| Curso | 2025-26 |
| Autores | María Cocina Sanjuanbenito, Fernando Trocoli de Toro, Rodrigo Sánchez de León Acevedo,
Marta Reiter Hernández |
| Este artículo ha sido escrito por estudiantes como parte de su evaluación en la asignatura | |
Contenido
- 1 Introducción
- 2 Mallado de la placa
- 3 Curvas de nivel de la temperatura (isotermas)
- 4 Campo de vectores en el mallado
- 5 Arco antes y después del desplazamiento
- 6 Divergencia del campo de vectores
- 7 Rotacional del campo de vectores |∇ × ⃗𝑢|
- 8 TENSIONES
- 9 Tensiones tangenciales
- 10 Tensiones tangenciales respecto al plano ortogonal [math]\vec e_\theta [/math]
- 11 Masa de la placa
- 12 Interpretación con ejemplo práctico
- 13 Póster
1 Introducción
En el sigiente artículo se estudia la parametrización y el mallado de una placa plana bidimensional con geometría de arco circular, delimitada por los radios 1 y 2. Sobre este dominio se definen dos magnitudes físicas: la temperatura [math]T(x,y)[/math], expresada en coordenadas cartesianas, y un campo de desplazamientos [math] \vec u(ρ,θ) [/math], descrito en coordenadas cilíndricas siguiendo la simetría geométrica del problema.
La temperatura viene dada por
mientras que el campo de desplazamientos se define como
El objetivo de esta introducción es establecer una formulación precisa del dominio y de las funciones involucradas, para disponer de una base adecuada para su discretización y análisis numérico. Incluidos en todos los apartados del artículo se incluyen códigos de Matlab, fotografías y gráficas de los resultados del problema.
2 Mallado de la placa
Para definir el mallado de la mitad de un anillo circular usaremos dos condiciones: que esté comprendido entre los radios R1=1 y R2=2, y el plano y ≥ |x|. Al estudiar la mitad de un anillo, trabajaremos en coordenadas cilíndricas.
Su representación quedará definida en la región (ρ,θ) ∈ [1,2] × [[math] 0,\pi[/math]].
Para el muestreo, que son las subdivisiones deseadas por unidad en función de ambos ejes, usaremos \(h = 1/10\).
% Definimos parámetros
h=0.1 %muestreo
r=1:h:2; %radios del arco
t=0:h:pi;
%Mallado en coordenadas cilíndricas
[RR,TT]=meshgrid(r,t);
% Pasamos de cilíndricas a cartesianas
x=RR.*cos(TT);
y=RR.*sin(TT);
%Gráfica del mallado
figure;
mesh(x,y,0*x); view(2); axis equal; axis([-3,1,-3,3]);
xlabel('Eje X'); ylabel('Eje Y'); title('Mallado de la placa');
%Bordes
hold on;
%radio exterior r=2
plot(2*cos(t),2*sin(t),'k', 'LineWidth', 2);
%radio interior r=1
plot(1*cos(t), 1*sin(t), 'k', 'LineWidth', 2);
plot([1*cos(0), 2*cos(0)], [1*sin(0), 2*sin(0)], 'k', 'LineWidth', 2);
plot([1*cos(pi), 2*cos(pi)], [1*sin(pi), 2*sin(pi)], 'k', 'LineWidth', 2);
hold off;
3 Curvas de nivel de la temperatura (isotermas)
La temperatura del sólido proviene de un foco de calor muy concentrado en los puntos que están a distancia 1 del origen.
La distribución de la temperatura en el sólido para dibujar sus curvas de nivel, viene dado por la función:
% Parámetros
h = 0.2; % Paso radial
r = 1:h:2; % Radios
t = linspace(0,pi,40);
% Mallado polar
[R, Th] = meshgrid(r, t);
% Conversión a coordenadas cartesianas
X = R .* cos(Th);
Y = R .* sin(Th);
% Función de temperatura
T = (X - Y).^2;
%Grafica 1: CONTORNOS
figure; subplot(1,2,1); mesh(X, Y, 0*X);
hold on
% Curvas de nivel
contour(X, Y, T, 25, "LineWidth", 1.2);
colorbar; title('CURVAS DE NIVEL DE LA TEMPERATURA','FontSize',14); axis([-3 3 -1 3]); view(0,90);
xlabel('Eje X')
ylabel('Eje Y')
hold off
%Grafica 2: 3D
subplot(1,2,2); surf(X, Y, T); shading interp; colorbar;
title('TEMPERATURA EN 3D','FontSize',14)
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Temperatura')
axis([-3 3 -1 3 0 max(T(:))])
axis vis3d
% Máxima temperatura
Tmax = max(T(:));
fprintf("La temperatura máxima es: %.4f\n", Tmax);
A partir del campo escalar, podemos calcular el gradiente de la temperatura [math]\nabla T[/math]. Que indica la dirección en la que aumenta nuestra temperatura. |[math]\nabla T[/math]| nos especificará cuanto aumenta.
Para calcular nuestro gradiente en cilíndricas, usaremos la fórmula:
Por lo tanto, el gradiente será:
% Parámetros de la placa
h = 0.1;
r = 1:h:2;
t = linspace(0,pi,50);
% Mallado polar
[R,Th] = meshgrid(r,t);
% Conversión a coordenadas cartesianas
X = R .* cos(Th);
Y = R .* sin(Th);
% Gradiente de T
% ∇T = (2(x-y), -2(x-y))
Gx = 2*(X - Y);
Gy = -2*(X - Y);
% Grafica 1: CURVAS DE NIVEL + GRADIENTE 2D
figure; subplot(1,2,1); mesh(X,Y,0*X);
hold on
contour(X,Y,T,20)
quiver(X,Y,Gx,Gy,'AutoScale','on','AutoScaleFactor',0.5)
colorbar
title('CURVAS DE NIVEL Y GRADIENTE','FontSize',14)
axis([-3 3 -0.5 3])
view(0,90)
xlabel('Eje X')
ylabel('Eje Y')
hold off
% GRAFICA 2: SUPERFICIE + GRADIENTE 3D
subplot(1,2,2);
surf(X,Y,T)
shading interp
hold on
esc = 0.2; quiver3(X,Y,T,esc*Gx,esc*Gy,0*Gx,'AutoScale','off')
hold off
colorbar
title('GRADIENTE 3D','FontSize',14)
xlabel('Eje X')
ylabel('Eje Y')
zlabel('Temperatura')
axis([-3 3 -0.5 3 0 max(T(:))])
axis vis3d
view(45,30)
% Gradiente máximo
Gmag = sqrt(Gx.^2 + Gy.^2);
Gmax = max(Gmag(:));
fprintf('Máximo módulo del gradiente: %.4f\n', Gmax);
4 Campo de vectores en el mallado
El campo de vectores [math]\vec u [/math] indica el desplazamiento de los puntos del sólido. En este caso usaremos la fórmula:% Medio arco: radios 1 a 2, ángulos 0 a pi
r1 = 1; r2 = 2;
t1 = 0; t2 = pi;
% Mallado
[R,T] = meshgrid(linspace(r1,r2,20), linspace(t1,t2,40));
% Campo en coordenadas polares
% u(r,theta) = (1/5)*(r-1)*r^2*cos(theta)*e_theta
Ur = 0.*R; % componente radial nula
Ut = (1/5).*(R-1).*R.^2.*sin(T); % componente tangencial
% Conversión a cartesianas
X = R.*cos(T);
Y = R.*sin(T);
% e_r = (cosθ, sinθ), e_theta = (-sinθ, cosθ)
Ux = Ur.*cos(T) - Ut.*sin(T);
Uy = Ur.*sin(T) + Ut.*cos(T);
% Dibujo del campo
figure;
quiver(X,Y,Ux,Uy,'b');
axis equal; hold on;
% Contorno del medio arco
theta = linspace(t1,t2,200);
plot(r1*cos(theta), r1*sin(theta),'k','LineWidth',1.2); % semicircunferencia interior
plot(r2*cos(theta), r2*sin(theta),'k','LineWidth',1.2); % semicircunferencia exterior
plot([r1*cos(t1) r2*cos(t1)], [r1*sin(t1) r2*sin(t1)], 'k','LineWidth',1.2); % radio izquierdo
plot([r1*cos(t2) r2*cos(t2)], [r1*sin(t2) r2*sin(t2)], 'k','LineWidth',1.2); % radio derecho
title('Campo u(r,\theta) = (1/5)(r-1)r^2\sin(\theta)\,e_{\theta} en medio arco');
xlabel('x'); ylabel('y');
5 Arco antes y después del desplazamiento
Las imágenes muestran la representación del sólido antes y después de la deformación producida por el campo de desplazamientos [math] \vec u(ρ,θ) [/math].
% Mallado
h = 0.1; % paso de mallado
r = 1:h:2; % radios
t = 0:h:pi; % ángulos
[R,T] = meshgrid(r,t);
% Coordenadas cartesianas de la placa no desplazada
X0 = R.*cos(T);
Y0 = R.*sin(T);
Ur = 0.*R; % componente radial nula
Ut = (1/5).*(R-1).*R.^2.*sin(T); % componente tangencial
% Conversión a cartesianas:
% e_r = (cosθ, sinθ), e_theta = (-sinθ, cosθ)
Ux = Ur.*cos(T) - Ut.*sin(T);
Uy = Ur.*sin(T) + Ut.*cos(T);
% Coordenadas desplazadas
Xd = X0 + Ux;
Yd = Y0 + Uy;
% '''GRAFICAS'''
figure;
% 1. Placa no desplazada
subplot(1,3,1); mesh(X0,Y0,0*X0,'EdgeColor',[0 0.7 0],'FaceColor','none');
view(2); axis equal; axis([-3 3 -1 3]); title('Placa no desplazada');
xlabel('Eje X'); ylabel('Eje Y');
% 2. Placa desplazada
subplot(1,3,2); mesh(Xd,Yd,0*Xd,'EdgeColor',[0.8 0 0],'FaceColor','none');
view(2); axis equal; axis([-3 3 -1 3]); title('Placa desplazada');
xlabel('Eje X'); ylabel('Eje Y');
% 3. Comparación
subplot(1,3,3); hold on;
mesh(X0,Y0,0*X0,'EdgeColor',[0 0.7 0],'FaceColor','none'); % original
mesh(Xd,Yd,0*Xd,'EdgeColor',[0.8 0 0],'FaceColor','none'); % desplazada
hold off; view(2); axis equal; axis([-3 3 -1 3]); title('Desplazamiento de la placa');
xlabel('Eje X'); ylabel('Eje Y');
6 Divergencia del campo de vectores
La divergencia mide la tasa de flujo saliente o entrante en un punto. Nos permite saber si un campo vectorial está comportándose como una "fuente" (flujo saliente) o como un "sumidero" (flujo entrante) en esa región.
6.1 ¿Qué es la divergencia?
Sea [math]\vec u(ρ,θ)[/math]: 𝐷 ⊂ ℝ3V un campo vectorial, expresado en la base cilíndrica. Y siendo la fórmula de la divergencia en coordenadas cilídricas:
El campo de desplazamientos es:
Una vez operado obtenemos
6.2 ¿Qué puntos tienen mayor divergencia? ¿Por qué?
Con el resultado del apartado anterior introducido en Matlab se puede observar que los puntos con máximos de divergencia son:
Máxima divergencia POSITIVA: div u = 0.40000 en (x,y) = (2.00000, 0.00000)
Máxima divergencia NEGATIVA:
div u = -0.39965 en (x,y) = (-1.99827, 0.08316)
La divergencia analítica del campo es ∇⋅u=51(ρ2−ρ)cosθ. Físicamente, esto indica una expansión volumétrica en la mitad derecha del arco (cosθ>0) y una compresión en la mitad izquierda (cosθ<0). La deformación es nula en el radio interior y crece cuadráticamente con el radio, alcanzando sus valores teóricos máximos (±0.4) en los extremos exteriores (±2,0). Las ligeras desviaciones en el resultado numérico son atribuibles al error de discretización del mallado (h=0.1).
''% Mallado
h = 0.1; % paso de mallado
r = 1:h:2; % radios
t = 0:h:pi; % ángulos
[RR,TT] = meshgrid(r,t);
% Coordenadas cartesianas del medio arco
X = RR.*cos(TT);
Y = RR.*sin(TT);''
% Divergencia del campo
% u = (1/5)*(rho-1)*rho^2*cos(theta)*e_theta
% => div u = (rho*(rho-1)*cos(theta))/5
DIV = (RR.*(RR-1).*cos(TT))/5;
figure;
% GRAFICA 1: DIVERGENCIA EN 2D
subplot(1,2,1); surf(X,Y,DIV,'EdgeColor','interp','FaceColor','interp'); view(2);
axis equal; axis([-3 3 -1 3]); xlabel('Eje X'); ylabel('Eje Y'); title('Divergencia 2D');
colorbar;
% GRAFICO 2: DIVERGENCIA 3D
subplot(1,2,2); surf(X,Y,DIV,'EdgeColor','interp','FaceColor','interp'); view(3); axis vis3d; xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');
title('Divergencia 3D'); colorbar;
% Máxima divergencia positiva
[maxDiv, idxMax] = max(DIV(:));
xMax = X(idxMax);
yMax = Y(idxMax);
% Máxima divergencia negativa
[minDiv, idxMin] = min(DIV(:));
xMin = X(idxMin);
yMin = Y(idxMin);
fprintf('Máxima divergencia POSITIVA:\n');
fprintf(' div u = %.5f en (x,y) = (%.5f, %.5f)\n', maxDiv, xMax, yMax);
fprintf('Máxima divergencia NEGATIVA:\n');
fprintf(' div u = %.5f en (x,y) = (%.5f, %.5f)\n', minDiv, xMin, yMin);
7 Rotacional del campo de vectores |∇ × ⃗𝑢|
7.1 ¿Qué es el rotacional?
Sea [math]\nabla×\vec u(ρ,θ)[/math] el rotacional de un campo de desplazamientos [math]\vec u [/math], se expresa como:
El rotacional de un campo vectorial mide su tendencia a rotar en un punto.
La cual desarrollada, queda:
Los puntos con mayor rotacional son:
Máximo rotacional (componente z POSITIVA): w_z = 2.00000 en (x,y) = (2.00000, 0.00000)
Mínimo rotacional (componente z NEGATIVA):
w_z = -1.99827 en (x,y) = (-1.99827, 0.08316)
El análisis de la divergencia del campo de desplazamientos, definida analíticamente como un quinto del producto entre la diferencia cuadrática del radio y el coseno del ángulo, revela un comportamiento físico dual en la placa. Los resultados numéricos muestran una expansión volumétrica máxima de 0.4 en el extremo derecho del arco, correspondiente a las coordenadas (2, 0), donde el coseno es positivo y el radio es máximo, y una compresión volumétrica máxima de aproximadamente -0.4 en el extremo izquierdo, correspondiente teóricamente a (-2, 0), donde el coseno es negativo. La deformación volumétrica es nula tanto en el radio interior como en la clave del arco. Por otro lado, el rotacional, que cuantifica la vorticidad o giro local del material, sigue una distribución dependiente del coseno del ángulo y creciente con el radio. Se observa un rotacional máximo positivo de 2.0 en el extremo derecho (2, 0), indicando un giro antihorario intenso, y un rotacional máximo negativo de aproximadamente -1.99 en el extremo izquierdo, indicando un giro horario. Las leves desviaciones en las coordenadas de los mínimos respecto a los valores teóricos geométricos (-2, 0) son atribuibles exclusivamente a la discretización del mallado con paso 0.1, que impide que un nodo coincida exactamente con el ángulo pi.
7.2 ¿Qué puntos tiene un mayor rotacional?
% Mallado del medio arco
h = 0.1; % paso de mallado
r = 1:h:2; % radios
t = 0:h:pi; % ángulos
[RR,TT] = meshgrid(r,t);
% Coordenadas cartesianas
X = RR.*cos(TT);
Y = RR.*sin(TT);
%ROTACIONAL
% u = (1/5)*(rho-1)*rho^2*cos(theta)*e_theta
% => (nabla x u)_z = rho*(4*rho - 3)*cos(theta)/5
ROTz = (RR.*(4*RR - 3).*cos(TT))/5;
figure;
% GRAFICA 1: ROTACIONAL 2D
subplot(1,2,1); surf(X,Y,ROTz,'EdgeColor','interp','FaceColor','interp'); view(2);axis equal; axis([-3 3 -1 3]); xlabel('Eje X'); ylabel('Eje Y');title('Rotacional 2D (\omega_z)');colorbar;
% GRAFICA 2: ROTACIONAL 3D
subplot(1,2,2); surf(X,Y,ROTz,'EdgeColor','interp','FaceColor','interp'); view(3); axis vis3d; xlabel('Eje X'); ylabel('Eje Y'); zlabel('Eje Z');
title('Rotacional 3D (\omega_z)'); colorbar;
%PUNTOS DE ROTACIONAL MÁXIMO
% Máximo (más positivo)
[maxRot, idxMax] = max(ROTz(:));
xMax = X(idxMax);
yMax = Y(idxMax);
% Mínimo (más negativo)
[minRot, idxMin] = min(ROTz(:));
xMin = X(idxMin);
yMin = Y(idxMin);
fprintf('Máximo rotacional (componente z POSITIVA):\n');
fprintf(' w_z = %.5f en (x,y) = (%.5f, %.5f)\n', maxRot, xMax, yMax);
fprintf('Mínimo rotacional (componente z NEGATIVA):\n');
fprintf(' w_z = %.5f en (x,y) = (%.5f, %.5f)\n', minRot, xMin, yMin);
8 TENSIONES
En un sólido deformable, cuando aplicamos fuerzas externas, experimenta fuerzas internas ejercidas por el propio material, que "luchan" contra esta deformación. Estas fuerzas internas se describen mediante un tensor de tensiones [math]\sigma [/math] que en cada punto indica: cómo el resto del material impide la deformación de la fuerza externa, y en qué dirección actúan estas fuerzas.
Las tensiones se obtienen a partir de la fórmula:Si tomamos como valores de µ = λ = 1, nuestra expresión queda:
8.1 Tensor de deformaciones
En un medio elástico lineal, isótropo y homogéneo, los desplazamientos [math] \vec u [/math] determinan las deformaciones a través del tensor de deformaciones:
que equivale a la parte simétrica del gradiente del campo de desplazamientos.
Para ello se calculan [math]\nabla{\vec u(ρ,θ)}[/math] y [math](\nabla{\vec u(ρ,θ)})^t[/math]:
Por tanto, la matriz [math]\nabla{\vec u(ρ,θ)}[/math] es:
Y su traspuesta [math](\nabla{\vec u(ρ,θ)})^t[/math]:
Por lo que el tensor deformaciones quedaría como:
8.2 Tensor de tensiones
Para hallar el tensor de tensiones, de fórmula [math]\sigma = λ \nabla · \vec u I + 2µ \epsilon [/math], usaremos los coeficientes de Lamé, el gradiente del campo de desplazamientos y el tensor de deformaciones calculado anteriormente.
Tomando como valores de λ y de µ = 1, [math]\sigma[/math] es:
8.3 Tensiones normales
A continuación calcularemos las tensiones ortogonales al plano de la placa, definido por los parámetros [math]\rho[/math] y [math]\theta[/math].
Las tensiones normales en la dirección que marca el eje [math]\overrightarrow e_{\rho} [/math], es decir, [math]\overrightarrow e_{\rho} \cdot σ \cdot \overrightarrow e_{\rho}[/math] son:
[math]\overrightarrow e_{\rho} \cdot σ \cdot \overrightarrow e_{\rho}=\begin{pmatrix} 1\\0\\0 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\
\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\
0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 1\\0\\0 \end{pmatrix}=\frac{1}{5}(\rho-1)\rho cos\theta[/math]
Las tensiones normales en la dirección que marca el eje eje[math]\overrightarrow e_{\theta} [/math], es decir [math]\overrightarrow e_{\theta} \cdot σ \cdot \overrightarrow e_{\theta}[/math] son:
[math]\overrightarrow e_{\theta} \cdot σ \cdot \overrightarrow e_{\theta}=\begin{pmatrix} 0\\1\\0 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\
\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\
0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 0\\1\\0 \end{pmatrix}=\frac{3}{5}(\rho-1)\rho cos\theta[/math]
Las tensiones normales en la dirección que marca el eje eje[math]\overrightarrow e_{z} [/math], es decir [math]\overrightarrow e_{z} \cdot σ \cdot \overrightarrow e_{z}[/math] son:
[math]\overrightarrow e_{z} \cdot σ \cdot \overrightarrow e_{z}=\begin{pmatrix} 0\\0\\1 \end{pmatrix}\cdot\begin{pmatrix} \ \frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\
\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\
0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta \\\end{pmatrix}\cdot\begin{pmatrix} 0\\0\\1 \end{pmatrix}=\frac{1}{5}(\rho-1)\rho cos\theta [/math]
A continuación representaremos cada una de las direcciones que toman las tensiones normales según el eje.
%Mallado
r = 1:0.2:2; % radios
t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco)
[rr,tt] = meshgrid(r,t);
% Coordenadas cartesianas del medio arco
xx = rr.*cos(tt);
yy = rr.*sin(tt);
%TENSIOES NORMALES EN CILÍNDRICAS
sigma_rr = (1/5).*(rr-1).*rr.*cos(tt); % e_r · σ · e_r
sigma_tt = (3/5).*(rr-1).*rr.*cos(tt); % e_θ · σ · e_θ
sigma_zz = (1/5).*(rr-1).*rr.*cos(tt); % e_z · σ · e_z
% TENSIÓN σ_{θ} EN CARTESIANAS
% Dirección e_theta = (-sinθ, cosθ)
Txx = -sin(tt).*sigma_tt;
Tyy = cos(tt).*sigma_tt;
figure;
% GRÁFICA 1: TENSIONES NORMALES
subplot(1,2,1); mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none'); view(2); hold on;
quiver(xx,yy,Txx,Tyy,'Color',[0 0.6 0.9]); hold off;
axis equal; axis([-3,3,-1,3]);title('Tensiones normales \sigma_{\theta\theta}');
xlabel('Eje X'); ylabel('Eje Y');
% GRÁFICA 2: DEFORMACIÓN
subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2);
axis equal; axis([-3,3,0,5]);title('Deformaciones por tensiones normales en dirección e_\theta');
xlabel('Eje X'); ylabel('Eje Y');
9 Tensiones tangenciales
Las tensiones tangenciales son las que actúan dentro del plano de la placa, es decir, paralelas a ella. Por tanto, son componentes ortogonales a las tensiones normales. Para poder calcularlas usamos el tensor tangencial: [math] T_t= (\vec σ·\vec n - \vec n\otimes\vec n [/math]·σ)[math]\vec t[/math]. Donde [math]\vec σ·\vec n[/math] es el vector total de tensión y [math]\vec n\otimes\vec n [/math]·σ es la parte normal del vector tracción [math]T_n [/math].
9.1 Respecto al plano ortogonal con eje [math]\vec e_ρ [/math]
En este caso, las tensiones tangenciales son las componentes en las direcciones [math]\vec e_\theta [/math] y [math]\vec e_z [/math], es decir:
|[math]σ·\vec e_ρ-(\vec e_ρ·(σ·\vec e_ρ))\vec e_ρ | = \left| \begin{pmatrix}
(\frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta) \\
\end{pmatrix} \cdot \begin{pmatrix} 1\\ 0 \\ 0 \end{pmatrix} - \frac{1}{5}(\rho-1)\rho cos\theta \cdot \begin{pmatrix} 1\\ 0 \\ 0 \end{pmatrix} \right| =
[/math]
%Mallado
r = 1:0.2:2; % radios
t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco)
[rr,tt] = meshgrid(r,t);
% Coordenadas cartesianas del medio arco
xx = rr.*cos(tt);
yy = rr.*sin(tt);
% TENSIONES TANGENCIALES en el plano normal a e_rho
tau_theta = (1/5).*(2*rr - 1).*rr.*sin(tt);
% Dirección e_theta = (-sinθ, cosθ)
Ttx = -sin(tt).*tau_theta; % componente x del vector tangencial
Tty = cos(tt).*tau_theta; % componente y del vector tangencial
figure;
% GRAFICA 1: TENSIONES TANGENCIALES
subplot(1,2,1); mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none'); view(2); hold on;
quiver(xx,yy,Ttx,Tty,'Color',[0 0.6 0.9]); axis equal; axis([-3,3,-1,3]);
xlabel('Eje X'); ylabel('Eje Y'); title('Tensiones tangenciales (plano normal a e_\rho)');
% GRAFICA 2: DEFORMACIONES
subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2);
axis equal; axis([-3,3,0,5]);xlabel('Eje X'); ylabel('Eje Y');
title('Deformaciones por tensiones tangenciales');
9.2 ¿Dónde son mayores?
tau_abs = abs(tau_theta);
[maxTau, idxMaxTau] = max(tau_abs(:));
xMaxTau = xx(idxMaxTau);
yMaxTau = yy(idxMaxTau);
fprintf('Máxima tensión tangencialAnalizando la función, el valor depende del seno del ángulo y cuadráticamente del radio. El valor máximo obtenido es 1.2000. Este se encuentra en las coordenadas (0, 2). La tensión es máxima en la clave del arco (θ=π/2, donde sinθ=1) y en la fibra exterior (ρ=2, donde el término radial es máximo). Esto indica que la parte superior externa del arco es la zona más crítica a cortante.
9.3 Comparación con puntos de mayor deformación del mallado
%COMPARACIÓN CON PUNTOS
% Magnitud del desplazamiento aplicado al mallado
desp = sqrt((escala*Ttx).^2 + (escala*Tty).^2);
[maxDesp, idxMaxDesp] = max(desp(:));
xMaxDesp = xx(idxMaxDesp);
yMaxDesp = yy(idxMaxDesp);
fprintf('Máxima deformación (desplazamiento)Al calcular la magnitud del desplazamiento ∣u∣, observamos que su máximo es 0.8000, localizado también en (0, 2). Existe una coincidencia exacta entre el punto de mayor desplazamiento y el punto de mayor tensión tangencial. Ambos ocurren en la clave del arco en su cara exterior. Esto sugiere que, en este modelo de carga, la zona de mayor movimiento es también la que sufre mayor riesgo de fallo por cizalladura.
10 Tensiones tangenciales respecto al plano ortogonal [math]\vec e_\theta [/math]
|[math]σ·\vec e_\theta-(\vec e_\theta·(σ·\vec e_\theta))\vec e_\theta | = \left| \begin{pmatrix}
(\frac{1}{5}(\rho-1)\rho cos\theta & \frac{1}{5}(2\rho -1)\rho sen\theta & 0 \\\frac{1}{5}(2\rho -1)\rho sen\theta & \frac{3}{5}(\rho-1)\rho cos\theta & 0 \\0 & 0 & \frac{1}{5}(\rho-1)\rho cos\theta) \\
\end{pmatrix} \cdot \begin{pmatrix} 0\\ \frac{1}{\rho} \\ 0 \end{pmatrix} - \frac{3}{5}(\rho-1)\rho cos\theta \cdot \begin{pmatrix} 0\\ \frac{1}{\rho} \\ 0 \end{pmatrix} \right| =
[/math]
% Mallado del medio arco
r = 1:0.2:2; % radios
t = linspace(0,pi,8); % ángulos de 0 a pi (medio arco)
[rr,tt] = meshgrid(r,t);
% Coordenadas cartesianas del medio arco
xx = rr.*cos(tt);
yy = rr.*sin(tt);
% TENSIONES TANGENCIALES respecto al plano ortogonal a e_theta
tau_rho = (1/5).*(2*rr - 1).*rr.*sin(tt);
% Dirección e_rho = (cosθ, sinθ)
Ttx = cos(tt).*tau_rho; % componente x del vector tangencial
Tty = sin(tt).*tau_rho; % componente y del vector tangencial
figure;
% GRAFICA 1. TENSIONES TANGENCIALES
subplot(1,2,1);mesh(xx,yy,0*xx,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2); hold on;
quiver(xx,yy,Ttx,Tty,'Color',[0 0.6 0.9]);axis equal; axis([-3,3,-1,3]);xlabel('Eje X'); ylabel('Eje Y');
title('Tensiones tangenciales (plano normal a e_\theta)');
% GRAFICA 2: DEFORMACIONES
subplot(1,2,2);mesh(X,Y,0*X,'EdgeColor',[0 0.7 0.7],'FaceColor','none');view(2);axis equal; axis([-3,3,0,5]);xlabel('Eje X'); ylabel('Eje Y');
title('Deformaciones por tensiones tangenciales (plano normal a e_\theta)');
==¿Dónde son mayores?==
tau_abs = abs(tau_rho); % magnitud de la tensión tangencial
[maxTau, idxMaxTau] = max(tau_abs(:)); % máximo absoluto
xMaxTau = xx(idxMaxTau);
yMaxTau = yy(idxMaxTau);
fprintf('Máxima tensión tangencial
11 Masa de la placa
Teniendo en cuenta que la densidad del material viene dada por [math]d(\rho, \theta) = 1 + e^{\rho^2 \cos \theta}[/math], se calcula la masa del mismo aplicando la siguiente fórmula.
Parametrizamos la superficie r(u,v) que representa el arco longitudinal, expresamos las componentes [math]\vec r´_{u}[/math]; [math]\vec r´_{v}[/math] y calculamos el módulo del producto vectorial entre ambas.
De manera que la masa del material es:
La resolución de la integral resultante se ha aproximado a través del método del rectángulo con el siguiente código de Matlab.
% Límites
rho1 = 1; rho2 = 2;
th1 = 0; th2 = pi;
% Integrando: densidad * Jacobiano (rho)
integrand = @(rho,theta) (1 + exp(rho.^2.*cos(theta))).*rho;
% Masa de la placa
M = integral2(integrand, rho1, rho2, th1, th2);
fprintf('Masa de la placa = %.10f\n', M);
Por tanto, M= 24,64
12 Interpretación con ejemplo práctico
En este trabajo se ha estudiado la respuesta elástica de una sección longitudinal de un arco comprendido entre los radios 1 y 2, que ha estado sometido a un campo de desplazamientos [math] \vec u = \frac{1}{5}\vec (ρ-1)ρ^2 sen(θ)\vec e_θ [/math] y se ha analizado la distribución de la temperatura [math]T(x,y)=(x-y)^2 [/math].
Por otro lado, si interpretamos el trabajo desde un enfoque práctico, observamos que existe una aplicación real. Suponemos que el dominio es una parte de la corteza terrestre y que el desplazamiento es provocado por las ondas S en terremotos. Esto quiere decir, que se interpreta el campo de deslizamientos como una onda sísmica de tipo S, que se propaga en una parte de la corteza terrestre representada por el arco de radios 1 y 2.
|
| Propagación de ondas sísmicas en el terreno (forma de nuestro arco longitudinal) |
Las ondas S producen desplazamientos tangenciales, dando lugar a deformaciones de cizalla. Esto coincide con el comportamiento del campo de deslizamientos, que desplaza cada punto únicamente en su dirección tangencial, moviendo el material sin cambiar su volumen de manera uniforme. El desplazamiento está dirigido según 𝑒𝜃, luego describe un movimiento tangencial (de tipo cizalla) alrededor del origen. El factor (𝜌 − 1) anula el desplazamiento en la frontera interior (𝜌 = 1, por lo que la deformación es nula en el borde interno y aumenta hacia el exterior. La dependencia sin𝜃 introduce una variación angular: los desplazamientos son nulos en 𝜃=0,𝜋 y máximos en 𝜃=𝜋/2,3𝜋/2.
La divergencia calculada muestra las zonas de la corteza terrestre donde el terreno se expande o comprime. En este caso, las ondas S no generan grandes cambios volumétricos, pues el modelo presenta pequeñas variaciones que pueden interpretarse como ajustes locales del terreno al propagarse la perturbación.
El rotacional representa las zonas donde el material experimenta giro debido al paso de la onda. Esta información permite ver en qué direcciones el terreno tiende a girar durante las vibraciones de estas ondas sísmicas.
Las tensiones normales y tangenciales obtenidas se pueden interpretar como las fuerzas internas que se desarrollan por debajo del terreno como respuesta al desplazamiento. Estas tensiones suelen ser las causantes de la formación de grietas o incluso fallas, cuando superan la resistencia del material. Las tensiones más elevadas se encuentran en la parte más alejada del dominio, donde los desplazamientos son mayores.
Finalmente, se puede observar que el modelo trabajado puede interpretarse como una versión simplificada del comportamiento de la corteza terrestre durante el paso de una onda sísmica de tipo S. Dentro de que está idealizado, nos permite entender cómo se distribuyen los desplazamientos, las tensiones y deformaciones en el terreno ante las vibraciones sísmicas.
13 Póster
Se muestra una fotografía del póster realizado, además de un link para poder descargarlo y verlo con mayor detalle a una mejor resolución.

