In [3]:
"""
IPython Notebook v4.0 para python 2.7
Librerías adicionales: numpy, matplotlib
Contenido bajo licencia CC-BY 4.0. Código bajo licencia MIT. (c) Sebastian Flores.
"""
# Configuracion para recargar módulos y librerías
%reload_ext autoreload
%autoreload 2
from IPython.core.display import HTML
HTML(open("style/mat281.css", "r").read())
Out[3]:
En términos de información:
Ecuaciones dimensionales $>>$ Ecuaciones Adimensionales $>>$ Teorema $\Pi$
Consideremos el ejemplo clásico de una barra de longitud infinita, de sección transversal $A$ y que se encuentra inicialmente a una temperatura $\tau_a$.
En $t = 0$ la barra se calienta en $x = 0$ a una temperatura $\tau_b$.
¿Cómo evoluciona la temperatura en las distintas posiciones de la barra, para los tiempos posteriores?
En particular, ¿cuál es la temperatura de la barra en el tiempo $t$ en la posición $x$?
¿Qué nos dice el Teorema $\Pi$? ¿Qué nos dice el análisis dimensional de las ecuaciones?
Hay $9$ variables y $4$ dimensiones, por lo que el problema requiere definir $9-4=5$ parámetros adimensionales.
Si elegimos como base: $\tau_a$, $x$, $t$, $c_p$.
$$\Pi_{\tau} = \Phi(\Pi_{\tau_b} , \Pi_{A} , \Pi_{\rho} , \Pi_{k} )$$No es particularmente prometedor. Sabemos que existe una relación, pero no sabemos cómo obtenerla.
¿Es lo mejor que podemos hacer?
¿Cómo mejora la situación si sabemos cómo se relacionan físicamente las variables?
Sabemos que para este problema aplican las siguientes ecuaciones, donde $q$ es el flujo de calor:
Si suponemos $k$ constante obtenemos: $$ \frac{\partial \tau}{\partial t} = \frac{k}{\rho c_p} \frac{\partial^2 \tau}{\partial x^2}$$
La constante $D =\frac{k}{\rho c_p}$ se llama constante de difusividad y tiene dimensión $\Big[ \frac{L^2}{T} \Big]$.
Normalmente los problemas hablan directamente de $D$ y olvidan las aproximaciones realizadas.
Ejemplos:
Hemos obtenido $$ \begin{align} \frac{\partial \tau}{\partial t} &= \Big( \frac{k}{\rho c_p} \Big) \frac{\partial^2 \tau}{\partial x^2}\\ \tau(x=0, t=0)&= \tau_b \\ \tau(x\neq 0, t=0)&= \tau_a \\ \end{align} $$ Con ello tenemos que $\tau= \Phi(x, t, \frac{k}{\rho c_p}, \tau_a, \tau_b)$.
Adimensionalicemos las variables de la ecuación anterior.
Partamos por las variables dependientes: $$ \begin{align} \tau &= \tau_0 \ \hat{\tau} \\ x &= x_0 \ \hat{x} \\ t &= t_0 \ \hat{t} \end{align} $$ Donde todavía no decidimos que utilizaremos como factores de escalamiento $\tau_0$, $x_0$ y $t_0$.
Para la derivada temporal $$ \begin{align} \frac{\partial \tau}{\partial t} & = \frac{\partial \tau_0 \hat{\tau}}{\partial t} = \tau_0 \frac{\partial \hat{\tau}}{\partial t} \\ & = \tau_0 \frac{\partial \hat{\tau}}{t_0 \partial \hat{t}} = \frac{\tau_0}{t_0} \frac{\partial \hat{\tau}}{\partial \hat{t}} \end{align} $$ y similarmente para la segunda derivada espacial $$ \begin{align} \frac{\partial^2 \tau}{\partial x^2} &= \frac{\partial}{\partial x} \frac{\partial \tau}{\partial x} = \frac{1}{x_0} \frac{\partial}{\partial \hat{x}} \frac{\tau_0}{x_0} \frac{\partial \hat{\tau}}{\partial \hat{x}} \\ &= \frac{\tau_0}{x_0^2} \frac{\partial}{\partial \hat{x}} \frac{\partial \hat{\tau}}{\partial \hat{x}} = \frac{\tau_0}{x_0^2} \frac{\partial^2 \hat{\tau}}{\partial \hat{x}^2} \end{align} $$
Utilizando lo anterior $$ \frac{\partial \tau}{\partial t} = \frac{k}{\rho c_p} \frac{\partial^2 \tau}{\partial x^2} $$ se convierte en $$ \frac{\tau_0}{t_0} \frac{\partial \hat{\tau}}{\partial \hat{t}} = \frac{k}{\rho c_p} \frac{\tau_0}{x_0^2} \frac{\partial^2 \hat{\tau}}{\partial \hat{x}^2} $$ es decir $$ \frac{\partial \hat{\tau}}{\partial \hat{t}} = \Big( \frac{k}{\rho c_p} \frac{t_0}{x_0^2} \Big) \frac{\partial^2 \hat{\tau}}{\partial \hat{x}^2} $$
se convierte en $$ \begin{align} \hat{\tau}(\hat{x}=0, \hat{t}=0)&= \frac{\tau_b}{\tau_0} \\ \hat{\tau}(\hat{x}\neq 0, \hat{t}=0)&= \frac{\tau_a}{\tau_0} \\ \end{align} $$
Hemos obtenido $$ \begin{align} \frac{\partial \hat{\tau}}{\partial \hat{t}} &= \Big( \frac{k}{\rho c_p} \frac{t_0}{x_0^2} \Big) \frac{\partial^2 \hat{\tau}}{\partial \hat{x}^2}\\ \hat{\tau}(\hat{x}=0, \hat{t}=0)&= \frac{\tau_b}{\tau_0} \\ \hat{\tau}(\hat{x}\neq 0, \hat{t}=0)&= \frac{\tau_a}{\tau_0} \\ \end{align} $$ Es posible y conveniente elegir la adimensionalización de modo que $$\begin{align} \frac{k}{\rho c_p} \frac{t_0}{x_0^2} &= 1 \\ \frac{\tau_a}{\tau_0} &=1 \end{align}$$
Independiente de la adimensionalización, se obtiene finalmente el sistema: $$ \begin{align} \frac{\partial \hat{\tau}}{\partial \hat{t}} &= \frac{\partial^2 \hat{\tau}}{\partial \hat{x}^2}\\ \hat{\tau}(\hat{x}=0, \hat{t}=0)&= \frac{\tau_b}{\tau_a} \\ \hat{\tau}(\hat{x}\neq 0, \hat{t}=0)&= 1 \end{align} $$
La temperatura adimensional depende de 2 variables $\hat{x}$ y $\hat{t}$ y un parámetro adimensional $\frac{\tau_b}{\tau_a}$, esto es,
$$\hat{\tau}= \Phi\Big(\hat{x}, \hat{t}, \frac{\tau_b}{\tau_a}\Big)$$Un problema que inicialmente dependía de 6 parámetros físicos ($A$, $c_p$, $k$, $\rho$, $\tau_a$, $\tau_b$), puede ser resuelto solamente por 1 parámetro ($\tau_b/\tau_a$) y luego escalado correctamente.
No sólo hemos resuelto para un menor número de parámetros, sino que la ecuación anterior indica que basta resolver para una combinación $\tau_b/\tau_a$ específica y que luego podemos recuperar la temperatura dimensional para cualquier valor $c_p$ y $k$ simplemente escalando correctamente.
Esto es, si resolvemos y conocemos $$\hat{\tau}= \Phi\Big(\hat{x}, \hat{t}, \tau_b/\tau_a\Big)$$ podemos ahora calcular la versión dimensional utilizando $$\tau = t_0 \hat{\tau}= t_0 \Phi\Big(x/x_0, t/t_0, \tau_b/\tau_a\Big)$$ Los coeficientes $\rho$, $c_p$ y $k$ se encuentran "camuflados" en las definiciones de $x_0$ y $t_0$.
Supongamos que para un experimento queremos saber cuánto tiempo se demora en llegar al 50% de la temperatura deseada, estando a 0.50 metro del origen, en funcion de los parámetros.
Para resolver el problema con parametros dimensionales ($\tau_a$, $\tau_b$, $\rho$, $c_p$, $k$) deberíamos realizar simulaciones en un gran espacio.
Si discretizamos el espacio de cada parámetro en 10 valores, se requerirían $10^5$ simulaciones. Si cada simulacion toma $1$ segundo, se requerirán $10^5$ segundos, es decir, $27$ horas.
Si discretizamos el espacio de cada parámetro en 20 valores, se requerirían $20^5$ simulaciones. Si cada simulacion toma $1$ segundo, se requerirán $20^5$ segundos, es decir, $36$ días.
Tomemos el caso del cobre:
In [1]:
from IPython.display import HTML
from mat281_code import heat
HTML(heat.run())
Out[1]:
El tiempo (adimensional) que le toma llegar a la mitad de la temperatura es independiente de las temperaturas elegidas.
Volviendo a parametros dimensionales, tenemos: $$ t^* = t_0 \hat{t}^* = \frac{x_0^2}{D} \ \ \hat{t}^* = \frac{\rho c_p}{k} x_0^2 \ \ \hat{t}^*$$