phd-defence-fr/chemical.model.tex

188 lines
7.8 KiB
TeX

\begin{frame}{Moteur chimique}
\begin{columns}
\column{.7\textwidth}\centering
\begin{itemize}
\item \structure{Modèle}
\begin{itemize}
\item Réaction-Diffusion-Évaporation à la Turing
\medskip
\item EDP couplées
\begin{equation*}
\frac{\partial\orr\varphi}{\partial t} =
\orr{\text{X}}(\orr\varphi) +
\orr{\text{D}} \cdot
\nabla^2\orr\varphi
- \orr{\text{E}} \cdot \orr\varphi
\end{equation*}
\end{itemize}
\item \structure{Simulation}
\begin{itemize}
\item Discrétisation de type différences finies sur un automate
cellulaire 2D
\medskip
\item Algorithme Propagation Parallèle à la Margolus (PPM)
\begin{itemize}
\item Simuler un automate cellulaire sur un support SIMD
\item Faire correspondre la segmentation de l'espace aux processus
\item Éviter les accès concurrents à la même zone mémoire
\end{itemize}
\end{itemize}
\end{itemize}
\column{.2\textwidth}
\moteurs[structure!30]
\end{columns}
% Animation du «calque» de démonstration de PPM
\uncover<2->{
\tikz[overlay,opacity=.95,transform canvas={scale around=.8:(current page.center)}]
\draw[black,fill=white,rounded corners,ultra thick]
(current page.south west) rectangle (current page.north east);
\only<2-7>{
\tikz[overlay] \node[anchor=center] at (current page.center) {
\begin{tikzpicture}[
cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\TINY},
neighbor cell/.style={black,size=1.5mm,circle,inner sep=0pt,font=\small},
center cell/.style={cell,white,fill=black},
spy using outlines={circle,red,size=58mm,magnification=4,connect spies}]
\begin{scope}[scale=.5]
\clip (-27mm,-27mm) rectangle (27mm,27mm);
% Background
\only<2,4-6>{%
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\only<3,6->{%
\fill[red!50,shift={(-5mm,-5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
\fill[blue!50,shift={(5mm,5mm)}] (-1cm,-1cm) rectangle (1cm,1cm);
}
\only<4-7>{
\begin{scope}
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
}
\only<4-6>{
\begin{scope}[shift={(-1cm,0)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(-1cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
\begin{scope}[shift={(0cm,-1cm)}]
\clip (-3mm,-3mm) rectangle (3mm,3mm);
\draw[very thin] (-5mm,-5mm) grid (5mm,5mm);
\end{scope}
}
\only<2,3>{
\node[center cell,font=\small] at ( -0mm, -0mm) {$A$};
\node[cell,font=\small] at (-10mm, -0mm) {$B$};
\node[cell,font=\small] at (-10mm,-10mm) {$C$};
\node[cell,font=\small] at ( -0mm,-10mm) {$D$};
}
\only<2,3,4>{
% Voisins
\node[neighbor cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[neighbor cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[neighbor cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[neighbor cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[neighbor cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[neighbor cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[neighbor cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[neighbor cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[neighbor cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[neighbor cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[neighbor cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[neighbor cell] at ( 1cm,-1cm) {$v_{D,3}$};
}
\only<4>{
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A$};
\node[cell] at (-10mm, -0mm) {$B$};
\node[cell] at (-10mm,-10mm) {$C$};
\node[cell] at ( -0mm,-10mm) {$D$};
\node[cell] at ( 1cm, 0cm) {$v_{A,1}$};
\node[cell] at ( 1cm, 1cm) {$v_{A,2}$};
\node[cell] at ( 0cm, 1cm) {$v_{A,3}$};
\node[cell] at (-1cm, 1cm) {$v_{B,1}$};
\node[cell] at (-2cm, 1cm) {$v_{B,2}$};
\node[cell] at (-2cm, 0cm) {$v_{B,3}$};
\node[cell] at (-2cm,-1cm) {$v_{C,1}$};
\node[cell] at (-2cm,-2cm) {$v_{C,2}$};
\node[cell] at (-1cm,-2cm) {$v_{C,3}$};
\node[cell] at ( 0cm,-2cm) {$v_{D,1}$};
\node[cell] at ( 1cm,-2cm) {$v_{D,2}$};
\node[cell] at ( 1cm,-1cm) {$v_{D,3}$};
\end{scope}
}
\only<5>{
\begin{scope}[scale=0.5,shift={(-5mm,-5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<6>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,5mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(-15mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
\begin{scope}[scale=0.5,shift={(5mm,-15mm)}]
\node[cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
\only<7>{
\begin{scope}[scale=0.5,shift={(5mm,5mm)}]
\node[center cell] at ( -0mm, -0mm) {$A'$};
\node[cell] at (-10mm, -0mm) {$B'$};
\node[cell] at (-10mm,-10mm) {$C'$};
\node[cell] at ( -0mm,-10mm) {$D'$};
\end{scope}
}
% Grilles:
\draw[xshift=5mm,yshift=5mm,thin] ( -5cm, -5cm) grid ( 5cm, 5cm);
\only<2,4-6>{\draw[xshift=5mm,yshift=5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<3,7>{\draw[xshift=-5mm,yshift=-5mm, step=2cm, thick]%
( -5cm, -5cm) grid ( 5cm, 5cm);}
\only<2,4-6>{
\coordinate (spyhook) at (-5mm,-5mm);
}
\only<3,7>{
\coordinate (spyhook) at (5mm,5mm);
}
\end{scope}
\spy on (spyhook) in node (zoom) at (5cm,0);
\end{tikzpicture}
};
}
}
\end{frame}