Mercurial > hg > thesis
changeset 20:f9f8689154ab default tip
Some minor updates
author | Jordi Gutiérrez Hermoso <jordigh@octave.org> |
---|---|
date | Wed, 19 Sep 2012 09:35:33 -0400 |
parents | 2a5043aeb962 |
children | |
files | code.tex |
diffstat | 1 files changed, 78 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/code.tex +++ b/code.tex @@ -108,7 +108,7 @@ continuación describiremos cómo estructuramos las clases del código. -\section{Descripción de clases} +\section{Descripción de módulos auxiliaresG} A continuación detallaremos el contenido de cada cabecera y su contenido. Esto es sólo un breve esquema de la estructura del @@ -125,6 +125,12 @@ para ahondar mucho en ellas, así que remitimos al lector interesado a la documentación completa de Doxygen. +\subsection{Módulo \vb{VTK}} + +Este módulo sólo contiene la clase \vb{vtkplot} que sirve para generar +visualizasiones de los valores que pueda producir un +\vb{interpolator<RBF>} o \vb{ddm<RBF>}. + \subsection{Módulo \vb{linalg}} En este espacio definimos algunas funciones envolventes para la @@ -134,7 +140,7 @@ sencilla, también los índices comienzan desde $1$, no $0$ como en C++, y es posible rebanar matrices y vectores respetando ciertas restricciones. Las clases más importantes de este espacio nominal -son \vb{kwantix::matrix} y \vb{kwnatix::vector}, por supuesto +son \vbN{kwantix::matrix} y \vb{kwnatix::vector}, por supuesto compatibles entre sí. Todas las funciones aritméticas básicas de álgebra lineal que se puedan esperar se encuentran aquí. Todas están implantadas por medio de BLAS\footnote{BLAS son las siglas en @@ -239,8 +245,8 @@ \subsection{Módulo \vb{BVP}} -En este espacio se encuentran la mayoría de las clases y -funcionalidad de nuestro código. Recordando el PVF \eqref{eq:thebvp}, +En este espacio se encuentran la mayoría de las clases auxiliares e +infraestructura de nuestro código. Recordando el PVF \eqref{eq:thebvp}, observamos que tiene varios componentes: \begin{itemize} \item Un operador diferencial interior $\mathcal{L}$. @@ -305,10 +311,10 @@ pero por el momento no las aproxima numéricamente. Esta clase es madre de varias otras clases. Además de ser madre - todos los miembros del espacio nominal \vb{rbf}, también es - madre de las interpolantes \vb{interpolator} y \vb{schwarz_ddm} - que veremos más adelante. También tiene envolturas para el tipo - de apuntadores a funciones que la GSL requiere mediante la clase + todos los miembros del espacio nominal \vb{rbf}, también es madre de + las interpolantes \vb{interpolator<RBF>} y \vb{schwarz_ddm<RBF>} que veremos + en breve. También tiene envolturas para el tipo de apuntadores a + funciones que la GSL requiere mediante la clase \vb{gsl_function_wrapper}. \end{description} @@ -319,7 +325,14 @@ clase derivada que ha resultado suficiente para nosotros y que modela un PVF lineal de orden $2$, \vb{linear_BVP2}. -\section{La clase \vb{interpolator<RBF>}} +\section{Módulo \vb{interpolator}} + +Este módulo contiene las clases que desempeñan la labor de juntar toda +la infrastructura de las demás mediante el método de colocación +asimétrica de interpolación o los métodos de descomposición de +dominios. Por lo tanto, las describiremos con más detenimiento. + +\subsection{La clase \vb{interpolator<RBF>}} Todas las clases descritas arriba son tan sólo el esquema general bajo el cual estamos trabajando, definen los ingredientes del @@ -362,7 +375,7 @@ cualquier forma, hay ciertas diferencias en la implementación de la solución del PVF \eqref{eq:thebvp}. -\subsection{Constructores e interpolación} +\subsubsection{Constructores e interpolación} Los constructores de la clase \vb{interpolator<RBR>} preparan al interpolador al resolver el problema de interpolación al efectuar una @@ -385,7 +398,7 @@ normales. \end{description} -\subsection{Evaluación y pre-cálculo} +\subsubsection{Evaluación y pre-cálculo} La clase de \vb{interpolator<RBF>} incluye varias funciones miembro para evaluar el interpolador y hasta dos derivadas, ya sea un un punto @@ -430,9 +443,60 @@ a partir de la matriz de derivadas de las FBR evaluadas en cada punto, aquí escrito como $D[M]$. De manera opcional, para evaluaciones de las derivadas de $u$ en cada punto de $\Xi$, tenemos funciones para -guardar en memoria +almacenar en memoria las derivadas de las FBR. Naturalmente, al volver +a evaluar la interpolación (es decir, al volver a resolver el sistema +\eqref{eq:reinterp} con una $\vec{f}$ distinta), volvemos a recalcular +también los valores del interpolador o sus derivadas que ya estén +almacenados, es decir, calculamos nuevamente $D[M]\vec{u}$ con el +nuevo $\vec{u}$ obtenido. + +Las funciones de Kwantix que facilitan estas operaciones son +\begin{description} + \item[Funciones de evaluación puntual] Como descritas arriba: + \begin{itemize} + \item \vb{double operator() (const point &p) const} + \item \vb{double at (const point &p) const} + \item \vb{double d (const point &p, size_t k) const} + \item \vb{double d2 (const point &p, size_t k1, size_t k2) const} + \end{itemize} + \item[Funciones de evaluación del dominio entero] Igual que la + anterior, pero nótese que se omite el parámetro \vb{p}: + \begin{itemize} + \item \vb{double operator() () const} + \item \vb{double at () const} + \item \vb{double d (size_t k) const} + \item \vb{double d2 (size_t k1, size_t k2) const} + \end{itemize} + \item[Funciones de precálculo] Para almacenar en memoria los valores + de las FBRs y sus posibles derivadas: + \begin{itemize} + \item \vb{void precompute_ev ()} + \item \vb{void precompute_d1 ()} + \item \vb{void precompute_d2 ()} + \end{itemize} +\end{description} + +\subsubsection{Otras funciones} + +Además de estas funciones, el interpolador también incluye funciones +para hacer una reinterpolación parcial según cambie $\vec{f}$ ó +$\vec{g}$ en \eqref{eq:thebvp}. Al cambiar los valores asociados a +cualquiera de estas dos funciones, es necesario volver a factorizar la +matriz $M$. + +Por último, para operaciones lineales entre dos interpoladores en el +mismo dominio, por ejemplo, +\begin{align*} +u(x) + v(x) &= \sum_{p \in \Xi} u_p \phi_p(x) + \sum_{p \in \Xi} v_p +\phi_p(x) \\ +&= \sum_{p \in \Xi} (u_p + v_p)\phi_p(x), +\end{align*} +también hemos definido funciones que operan coeficiente por +coeficiente. Esto facilita las operaciones cuando hay varios +interpoladores en uso en el mismo dominio. Tal es el caso de las +ecuaciones de aguas someras más adelante. %%% Local Variables: -%%% mode: latex -%%% TeX-master: "thesis" +%%% mode: latex +%%% TeX-master: "thesis" %%% End: