-\begin{tikzpicture}\r
-\r
-\tikzstyle{abstract}=[rectangle, draw=black, rounded corners, fill=white, drop shadow, text centered, anchor=north, text width=6cm]\r
- \r
-%nodes\r
-\node (Vector) [abstract, rectangle split, rectangle split parts=3]\r
-{\r
-\textbf{Vector}\r
-\nodepart{second}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-typedef value_type;\r
-typedef size_type;\r
-\end{lstlisting}\r
-\nodepart{third}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
- Vector(size_type);\r
- Vector(Vector);\r
-void axpy(value_type,Vector);\r
-void axpby(value_type,Vector);\r
-void copy(Vector);\r
-value_type dot(Vector);\r
-Vector* duplicate();\r
-void fill(value_type);\r
-value_type nrmi();\r
-value_type nrm2();\r
-void scal(vale_type);\r
-size_type size();\r
-\end{lstlisting}\r
-};\r
-\r
-\node (Matrix) [abstract, rectangle split, rectangle split parts=3, below right=0cm and 0.4cm of Vector.north east]\r
-{\r
-\textbf{Matrix}\r
-\nodepart{second}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-typedef vector_type;\r
-\end{lstlisting}\r
-\nodepart{third}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-void mult(vector_type);\r
-\end{lstlisting}\r
-};\r
-\r
-\node (Solver) [abstract, rectangle split, rectangle split parts=3, below=of Vector]\r
-{\r
-\textbf{EqSolver}\r
-\nodepart{second}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-typedef vector_type;\r
-typedef matrix_type;\r
-typedef monitor_type;\r
-typedef preconditioner_type;\r
-\end{lstlisting}\r
-\nodepart{third}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
- EqSolver(matrix_type\r
- ,monitor_type);\r
-void solve(vector_type,vector_type);\r
-void set_preconditioner(preconditioner_type);\r
-\end{lstlisting}\r
-};\r
-\r
-\node (Preconditioner) [abstract, rectangle split, rectangle split parts=3, below=of Matrix]\r
-{\r
-\textbf{Preconditioner}\r
-\nodepart{second}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-typedef vector_type;\r
-typedef matrix_type;\r
-typedef monitor_type;\r
-\end{lstlisting}\r
-\nodepart{third}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
- Preconditioner(matrix_type\r
- ,monitor_type);\r
-void operator()(vector_type,vector_type)\r
-\end{lstlisting}\r
-};\r
-\r
-\node (TimeIntegrator) [abstract, rectangle split, rectangle split parts=2, below=of Preconditioner]\r
-{\r
-\textbf{TimeIntegrator}\r
-\nodepart{second}\r
-%\nodepart{third}\r
-\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily]\r
-template <typename rhs_type\r
- , typename vector_type\r
- , typename value_type>\r
-void operator()(rhs_type\r
- ,vector_type\r
- ,value_type\r
- ,value_type\r
- ,value_type);\r
-\end{lstlisting}\r
-};\r
-\r
-\end{tikzpicture}\r
+\begin{tikzpicture}
+
+\tikzstyle{abstract}=[rectangle, draw=black, rounded corners, fill=white, drop shadow, text centered, anchor=north, text width=5.5cm]
+
+%nodes
+\node (Vector) [abstract, rectangle split, rectangle split parts=3]
+{
+\textbf{Vector}
+\nodepart{second}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+typedef value_type;
+typedef size_type;
+\end{lstlisting}
+\nodepart{third}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+ Vector(size_type);
+ Vector(Vector);
+void axpy(value_type,Vector);
+void axpby(value_type,Vector);
+void copy(Vector);
+value_type dot(Vector);
+Vector* duplicate();
+void fill(value_type);
+value_type nrmi();
+value_type nrm2();
+void scal(vale_type);
+size_type size();
+\end{lstlisting}
+};
+
+\node (Matrix) [abstract, rectangle split, rectangle split parts=3, below right=0cm and 0.4cm of Vector.north east]
+{
+\textbf{Matrix}
+\nodepart{second}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+typedef vector_type;
+\end{lstlisting}
+\nodepart{third}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+void mult(vector_type,vector_type);
+\end{lstlisting}
+};
+
+\node (Solver) [abstract, rectangle split, rectangle split parts=3, below=0.4cm of Vector]
+{
+\textbf{EqSolver}
+\nodepart{second}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+typedef vector_type;
+typedef matrix_type;
+typedef monitor_type;
+typedef preconditioner_type;
+\end{lstlisting}
+\nodepart{third}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+ EqSolver(matrix_type
+ ,monitor_type);
+void solve(vector_type,vector_type);
+void set_preconditioner(preconditioner_type);
+\end{lstlisting}
+};
+
+\node (Preconditioner) [abstract, rectangle split, rectangle split parts=3, below=0.4cm of Matrix]
+{
+\textbf{Preconditioner}
+\nodepart{second}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+typedef vector_type;
+typedef matrix_type;
+typedef monitor_type;
+\end{lstlisting}
+\nodepart{third}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+ Preconditioner(matrix_type
+ ,monitor_type);
+void operator()(vector_type
+ ,vector_type)
+\end{lstlisting}
+};
+
+\node (TimeIntegrator) [abstract, rectangle split, rectangle split parts=2, below=0.4cm of Preconditioner]
+{
+\textbf{TimeIntegrator}
+\nodepart{second}
+%\nodepart{third}
+\begin{lstlisting}[frame=none,basicstyle=\scriptsize\ttfamily,backgroundcolor=\color{white},numbers=none]
+template <typename rhs_type
+ , typename vector_type
+ , typename value_type>
+void operator()(rhs_type
+ ,vector_type
+ ,value_type
+ ,value_type
+ ,value_type);
+\end{lstlisting}
+};
+
+\end{tikzpicture}