3 \tikzstyle{abstract}=[rectangle, draw=black, rounded corners, fill=white, drop shadow, text centered, anchor=north, text width=5.5cm]
6 \node (Vector) [abstract, rectangle split, rectangle split parts=3]
10 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
15 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
18 void axpy(value_type,Vector);
19 void axpby(value_type,Vector);
21 value_type dot(Vector);
23 void fill(value_type);
31 \node (Matrix) [abstract, rectangle split, rectangle split parts=3, below right=0cm and 0.4cm of Vector.north east]
35 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
39 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
40 void mult(vector_type,vector_type);
44 \node (Solver) [abstract, rectangle split, rectangle split parts=3, below=0.4cm of Vector]
48 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
52 typedef preconditioner_type;
55 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
58 void solve(vector_type,vector_type);
59 void set_preconditioner(preconditioner_type);
63 \node (Preconditioner) [abstract, rectangle split, rectangle split parts=3, below=0.4cm of Matrix]
65 \textbf{Preconditioner}
67 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
73 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
74 Preconditioner(matrix_type
76 void operator()(vector_type
81 \node (TimeIntegrator) [abstract, rectangle split, rectangle split parts=2, below=0.4cm of Preconditioner]
83 \textbf{TimeIntegrator}
86 \begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
87 template <typename rhs_type
88 , typename vector_type
89 , typename value_type>
90 void operator()(rhs_type