\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}