\documentclass[12pt]{article}
\usepackage{graphicx,amsmath,amsfonts,amssymb,epsfig,euscript,enumerate}
\usepackage[T1]{fontenc}
\usepackage[utf8x]{inputenc}

\newtheorem{ejer}{Ejercicio}
\newcommand{\bej}{\begin{ejer}\rm}
\newcommand{\fej}{\end{ejer}}

\newcommand{\gO}{\Omega}
\newcommand{\R}{\mathbb{R}}
\newcommand{\C}{\mathbb{C}}
\def\dt{\Delta t}
\def\dx{\Delta x}

\topmargin-2cm \vsize 29.5cm \hsize 21cm
\setlength{\textwidth}{16.75cm}\setlength{\textheight}{23.5cm}
\setlength{\oddsidemargin}{0.0cm}
\setlength{\evensidemargin}{0.0cm}

\begin{document}
\centerline{{\small Universidad de Buenos Aires - Facultad de Ciencias Exactas y Naturales - Depto. de Matemática}}

 \vskip 0.2cm
 \hrulefill
 \vskip 0.2cm

 \centerline{{\bf\Huge {\sc Análisis Numérico}}}
 \vskip 0.2cm
 \centerline{\ttfamily Segundo Cuatrimestre 2019}
 \hrulefill

 \bigskip
 \centerline{\bf TP  N$^\circ$ 2 - Tema 2: Convección-difusión.}
 \bigskip


\section{El problema:}

Considerar el problema de convección-difusión:
\begin{equation}\label{eq}
\def\arraystretch{1.5}
\begin{array}{cl}
u_t(x,t) = \alpha\Delta_x u(x,t) - {\bf v}(x)\cdot \nabla_x u(x,t) &
\quad x\in\Omega,\;t\in[0,T] \\
u(x,0) = g(x) &
\end{array}
\end{equation}

La incógnita $u$ puede interpretarse como la concentración de una cierta sustancia quimíca en un medio. El término $\alpha\Delta_x u$ describe la difusidad: un punto de alta densidad, tenderá a difundir concentración hacia su entorno. $\alpha$ es un coeficiente positivo que modela la difusividad de la sustancia en el medio. El término de transporte ${\bf v} \cdot \nabla u$ modela el movimiento del medio, que traslada la sustancia. ${\bf v}:\R^2\to\R^2$ es el campo de velocidades. La condición de Neumann implica que no hay flujo hacia el exterior, es decir: que la cantidad total de sustancia se mantiene constante. Consideraremos $\Omega=B(0,1)$


\section{Formulación Discreta}
Dada una triangulacion $\mathcal{T}_h$ de $\Omega$, considerar el espacio $V_h$ de funciones continuas y lineales en cada triángulo. Llamemos $\{\phi_i\}_i$ a la base nodal de $V_h$. La discretización de la formulación débil del problema conduce a la necesidad de calcular la matriz de masa $M$, de rigidez $R$ y la matriz correspondiente al término convectivo $C$, dadas por:
$$M_{i,j} = \int_\Omega \phi_i\phi_j\qquad R_{i,j} =\int_\Omega\nabla\phi_i\nabla\phi_j\qquad C_{i,j} = \int_\Omega ({\bf v}\cdot \nabla\phi_j)\phi_i$$

Con esta notación el problema discreto es:
$$ (M+dt(\alpha R+C)) U^{n+1} = M U^n$$
donde $dt$ es el paso temporal y $U^n$ es el vector de coeficientesde $u_h$ a tiempo $n$.

Es conveniente hacer un programa auxiliar que, dados los datos de la triangulación, calcule las matrices $M$, $R$ y $C$.


\section{Datos }
Estudiaremos, para ${\bf v}$:
\begin{itemize}
\item  ${\bf v} = v(x,y) = (-y,x)/\|(x,y)\|$.
\end{itemize}
Con esta configuración, el problema puede pensarse como la disolución de azúcar en una taza, al revolver. 
Para el dato inicial pueden probarse distintas opciones. Por ejemplo, $g = \chi_{B((0,\frac{1}{2}),\frac{1}{4})}$

\subsection{Comandos útiles:}
Pueden resultar útiles las siguientes funciones: 
\begin{itemize}
\item \verb+Delaunay+, de la biblioteca \verb+scipy.spatial+ para la construcción de la triangulación. Alternativamente, puede usarse \verb+Triangulation+ de \verb+matplotlib.tri+, que también servirá para dibujar. 
\item \verb+csr_matrix+ de la biblioteca \verb+scipy.sparse+ para el ensamblado de matrices 
\item \verb+spsolve+ o \verb+cg+ de \verb+scipy.sparse.linalg+ para la resolución de sistemas.
\item \verb+tripcolor+, de \verb+matplotlib.pyplot+ en conjunción con \verb+Triangulation+ de \verb+matplotlib.tri+ para graficar. \verb+tripcolor+ hace un grafico 2D sobre una malla triangular, en donde la magnitud de la función graficada se traduce en color. 
\end{itemize}
\end{document}
