aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2001-07-10 09:16:24 +0000
committerallen <allen@b61c5cb5-eaca-4651-9a7a-d64986f99364>2001-07-10 09:16:24 +0000
commit2842fdbb75b6d85bf89aa9b01214c28b1a72b9db (patch)
tree4a3e3f48b0817aedbf15599cb3f9862f4cc90504 /doc
parent12feb3e7ffb60bbd561ff628ed92c1abc7868736 (diff)
Initial doc for PUGH.
Still need to add details about processor decomposition, and the default load distribution wrt ghostzones, periodicity and that. git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGH/PUGH/trunk@339 b61c5cb5-eaca-4651-9a7a-d64986f99364
Diffstat (limited to 'doc')
-rw-r--r--doc/documentation.tex233
-rw-r--r--doc/periodic.eps277
-rw-r--r--doc/periodic.fig109
3 files changed, 619 insertions, 0 deletions
diff --git a/doc/documentation.tex b/doc/documentation.tex
new file mode 100644
index 0000000..ac5251f
--- /dev/null
+++ b/doc/documentation.tex
@@ -0,0 +1,233 @@
+\documentclass{article}
+
+\usepackage{fancyhdr,ifthen,calc}
+
+\newif\ifpdf
+\ifx\pdfoutput\undefined
+\pdffalse % we are not running PDFLaTeX
+\else
+\pdfoutput=1 % we are running PDFLaTeX
+\pdftrue
+\fi
+
+\ifpdf
+\usepackage[pdftex]{graphicx}
+\else
+\usepackage{graphicx}
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% MANPAGE like description setting for options, use as
+% \begin{Lentry} \item[text] text \end{Lentry}
+
+\newcommand{\entrylabel}[1]{\mbox{\textsf{#1}}\hfil}
+\newenvironment{entry}
+ {\begin{list}{}
+ {\renewcommand{\makelabel}{\entrylabel}
+ \setlength{\labelwidth}{90pt}
+ \setlength{\leftmargin}{\labelwidth+\labelsep}
+ }
+ }
+ {\end{list}}
+
+\newlength{\Mylen}
+\newcommand{\Lentrylabel}[1]{%
+ \settowidth{\Mylen}{\textsf{#1}}%
+ \ifthenelse{\lengthtest{\Mylen > \labelwidth}}%
+ {\parbox[b]{\labelwidth} % term > labelwidth
+ {\makebox[0pt][l]{\textsf{#1}}\\}} %
+ {\textsf{#1}} %
+
+ \hfil\relax}
+\newenvironment{Lentry}
+ {\renewcommand{\entrylabel}{\Lentrylabel}
+ \begin{entry}}
+ {\end{entry}}
+%%%%%%
+
+\begin{document}
+
+\title{PUGH}
+\author{Gabrielle Allen}
+\date{2001}
+\maketitle
+
+\abstract{The default unigrid driver for Cactus for both multiprocessor and single process runs, handling grid variables and communications.}
+
+\section{Description}
+
+PUGH can create, handle and communicate grid scalars, arrays and functions
+in 1, 2 or 3-dimensions.
+
+\section{Compilation}
+
+PUGH can be compiled with or without MPI. Compiling without MPI results
+in an executable which can only be used on a single processor, compiling
+with MPI leads to an executable which can be used with either single or
+multiple processors.
+
+For configuring with MPI, see the Cactus User's Guide.
+
+\section{Grid Size}
+
+The number of grid points used for a simulation can be set in PUGH either
+globally (that is, the total number of points across all processors), or
+locally (that is, the number of points on each processor).
+
+To set the global size of a 2D grid to be $40\times 40$ use
+
+{\tt
+\begin{verbatim}
+driver::global_nx = 40
+driver::global_ny = 40
+\end{verbatim}
+}
+
+To set the local size of a 2D grid to be $40\times 20$ on each processor, use
+
+{\tt
+\begin{verbatim}
+pugh::local_nx = 40
+pugh::local_ny = 20
+\end{verbatim}
+}
+
+
+
+\section{Periodic Boundary Conditions}
+
+PUGH can implement periodic boundary conditions during the synchronization
+of grid functions. Although this may a first seem a little confusing, and
+unlike the usual use of boundary conditions which are directly called from
+evolution routines, it is the most efficient and natural place for periodic
+boundary conditions.
+
+PUGH applied periodic conditions by simply communicating the appropriate
+ghostzones between "end" processors. For example, for a 1D domain with two
+ghostzones, split across two processors, Figure~\ref{pugh::fig1} shows the implementation of periodic boundary conditions.
+
+\begin{figure}[ht]
+\begin{center}
+\ifpdf
+\else
+\includegraphics[angle=0,width=8cm]{periodic.eps}
+\fi
+\end{center}
+\caption[]{Implementation of periodic boundary conditions for a 1D domain, with two ghostzones, split across two processors. The lines labelled {\bf A} show the {\it standard} communications during synchronisation, the lines labelled
+{\bf B} show the additional communications for periodic boundary conditions.}
+\label{pugh::fig1}
+\end{figure}
+
+Periodic boundary conditions are applied to all grid functions, by default
+they are applied in all directions, although this behaviour can be customised
+to switch them off in given directions.
+
+By default, no periodic boundary conditions are applied. To apply periodic boundary conditions in all directions, set
+
+{\tt
+\begin{verbatim}
+driver::periodic = "yes"
+\end{verbatim}
+}
+
+To apply periodic boundary conditions in just the x- and y- directions or
+a 3 dimension domain, use
+
+{\tt
+\begin{verbatim}
+driver::periodic = "yes"
+driver::periodic_z = "no"
+\end{verbatim}
+}
+
+\section{Processor Decomposition}
+
+\section{Load Balancing}
+
+By default PUGH will distribute the computational grid evenly across
+all processors. This may not be efficient if there is a different
+computational load on different processors, or for example for a simulation
+distributed across different processor speeds.
+
+The computational grid can be manually distributed using the parameters
+{\tt partition[\_1d\_x|\_2d\_x|\_2d\_y|\_3d\_x|\_3d\_y|\_3d\_z]}. To manual specify the
+load distribution, set {\tt pugh::partition = ``manual''} and then,
+depending on the grid dimension, set the remaining parameters
+to distribute the load in each direction. Note that for this you need
+to know apriori the processor decomposition.
+
+The decomposition is easiest to explain with an example,
+to distribute a grid with $30 \times 30$ points across
+4 processors (decomposed as $2 \times 2$) as:
+
+\begin{tabular}{cc}
+$20\times 15$ & $10 \times 15$ \\
+$20\times 15$ & $10 \times 15$
+\end{tabular}
+
+use the parameters
+
+{\tt
+\begin{verbatim}
+pugh::partition=''manual''
+pugh::partition_2d_x=''20:10''
+pugh::partition_2d_y=''15:15''
+\end{verbatim}
+}
+
+
+Note that an empty string for a direction will apply the automatic distribution.
+
+\section{Useful Parameters}
+
+There are several parameters in PUGH which are useful for debugging and
+optimisation:
+
+\begin{Lentry}
+
+\item[{\tt pugh::enable\_all\_storage}]
+
+ Enables storage for all grid variables (that is, not only
+ those set in a thorns {\tt schedule.ccl} file). Try this parameter
+ if you are getting segmentation faults, if enabling all storage
+ removes the problem, it most likely means that you are accessing
+ a grid variable (probably in a Fortran thorn) for which storage
+ has not been set.
+
+\item[{\tt pugh::initialise\_memory}]
+
+ By default, when PUGH allocates storage for a grid variable it
+ does not initialise its elements. If you access an
+ uninitialised variable on some platforms you will get a
+ segmentation fault (and in general you will see erratic
+ behaviour). This parameter can be used to initialise all
+ elements to zero, if this removes your segmentation fault you
+ can then track down the cause of the problem by using the same
+ parameter to initialize all elements to NaNs and then track
+ them with the thorn {\tt CactusUtils/NaNChecker}.
+
+ Note that it isn't recommended to simply use this parameter to
+ initialise all elements to zero, instead we recommend you to
+ set all variables to their correct values before using them.
+
+\item[{\tt pugh::storage\_verbose}]
+
+ This parameter can be set to print out the number of grid variables
+ which have storage allocated at each iteration, and the total
+ size of the storage allocated by Cactus. Note that this total
+ does not include storage allocated independently in thorns.
+
+\item[{\tt timer\_output}]
+
+ This parameter can be set to provide the time spent communicating
+ variables between processors.
+
+\end{Lentry}
+
+
+% Automatically created from the ccl files by using gmake thorndoc
+\include{interface}
+\include{param}
+\include{schedule}
+
+\end{document}
diff --git a/doc/periodic.eps b/doc/periodic.eps
new file mode 100644
index 0000000..50d7941
--- /dev/null
+++ b/doc/periodic.eps
@@ -0,0 +1,277 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: periodic.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Tue Jul 10 10:10:56 2001
+%%For: allen@gullveig.aei.mpg.de (Gab)
+%%BoundingBox: 0 0 412 242
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 242 moveto 0 0 lineto 412 0 lineto 412 242 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 412 0 lineto 412 242 lineto 0 242 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-55.0 429.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+ /DrawEllipse {
+ /endangle exch def
+ /startangle exch def
+ /yrad exch def
+ /xrad exch def
+ /y exch def
+ /x exch def
+ /savematrix mtrx currentmatrix def
+ x y tr xrad yrad sc 0 0 1 startangle endangle arc
+ closepath
+ savematrix setmatrix
+ } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06000 0.06000 sc
+% Polyline
+30.000 slw
+n 1125 5025 m
+ 1275 5175 l gs col0 s gr
+% Polyline
+n 1125 5175 m
+ 1275 5025 l gs col0 s gr
+% Polyline
+n 1425 5025 m
+ 1575 5175 l gs col0 s gr
+% Polyline
+n 1425 5175 m
+ 1575 5025 l gs col0 s gr
+% Polyline
+n 3825 5025 m
+ 3975 5175 l gs col0 s gr
+% Polyline
+n 3825 5175 m
+ 3975 5025 l gs col0 s gr
+% Polyline
+n 3525 5025 m
+ 3675 5175 l gs col0 s gr
+% Polyline
+n 3525 5175 m
+ 3675 5025 l gs col0 s gr
+% Polyline
+n 1125 5025 m
+ 1275 5175 l gs col0 s gr
+% Polyline
+n 1125 5175 m
+ 1275 5025 l gs col0 s gr
+% Polyline
+7.500 slw
+n 1200 5100 m
+ 3900 5100 l gs col0 s gr
+% Ellipse
+n 1800 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2100 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2400 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 2700 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3000 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3300 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Polyline
+30.000 slw
+n 4725 5025 m
+ 4875 5175 l gs col0 s gr
+% Polyline
+n 4725 5175 m
+ 4875 5025 l gs col0 s gr
+% Polyline
+n 5025 5025 m
+ 5175 5175 l gs col0 s gr
+% Polyline
+n 5025 5175 m
+ 5175 5025 l gs col0 s gr
+% Polyline
+n 7425 5025 m
+ 7575 5175 l gs col0 s gr
+% Polyline
+n 7425 5175 m
+ 7575 5025 l gs col0 s gr
+% Polyline
+n 7125 5025 m
+ 7275 5175 l gs col0 s gr
+% Polyline
+n 7125 5175 m
+ 7275 5025 l gs col0 s gr
+% Polyline
+n 4725 5025 m
+ 4875 5175 l gs col0 s gr
+% Polyline
+n 4725 5175 m
+ 4875 5025 l gs col0 s gr
+% Polyline
+7.500 slw
+n 4800 5100 m
+ 7500 5100 l gs col0 s gr
+% Ellipse
+n 5400 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5700 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6000 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6300 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6600 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6900 5100 75 75 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Arc
+gs clippath
+3716 4800 m 3770 4826 l 3869 4616 l 3791 4712 l 3814 4590 l cp
+eoclip
+n 4650.0 5156.2 967.9 -158.4 -21.6 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+45.000 slw
+n 3814 4590 m 3791 4712 l 3869 4616 l 3814 4590 l cp gs 0.00 setgray ef gr col0 s
+% Arc
+7.500 slw
+gs clippath
+4983 5399 m 4929 5373 l 4830 5583 l 4909 5488 l 4885 5609 l cp
+eoclip
+n 4050.0 5043.8 967.9 21.6 158.4 arc
+gs col0 s gr
+ gr
+
+% arrowhead
+45.000 slw
+n 4885 5609 m 4909 5488 l 4830 5583 l 4885 5609 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+7.500 slw
+gs clippath
+1320 4815 m 1380 4815 l 1380 4583 l 1350 4703 l 1320 4583 l cp
+eoclip
+n 1350 4800 m 1350 3600 l 6750 3600 l
+ 6750 4800 l gs col0 s gr gr
+
+% arrowhead
+45.000 slw
+n 1320 4583 m 1350 4703 l 1380 4583 l 1320 4583 l cp gs 0.00 setgray ef gr col0 s
+% Polyline
+7.500 slw
+gs clippath
+7380 5385 m 7320 5385 l 7320 5617 l 7350 5497 l 7380 5617 l cp
+eoclip
+n 7350 5400 m 7350 6600 l 1950 6600 l
+ 1950 5400 l gs col0 s gr gr
+
+% arrowhead
+45.000 slw
+n 7380 5617 m 7350 5497 l 7320 5617 l 7380 5617 l cp gs 0.00 setgray ef gr col0 s
+/Times-Bold ff 180.00 scf sf
+2025 4725 m
+gs 1 -1 sc (PROCESSOR 0) col0 sh gr
+/Times-Bold ff 180.00 scf sf
+5475 5625 m
+gs 1 -1 sc (PROCESSOR 1) col0 sh gr
+/Times-Bold ff 240.00 scf sf
+4050 3450 m
+gs 1 -1 sc (B) col0 sh gr
+/Times-Bold ff 240.00 scf sf
+4575 6975 m
+gs 1 -1 sc (B) col0 sh gr
+/Times-Bold ff 240.00 scf sf
+5400 4350 m
+gs 1 -1 sc (A) col0 sh gr
+/Times-Bold ff 240.00 scf sf
+3150 5925 m
+gs 1 -1 sc (A) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/periodic.fig b/doc/periodic.fig
new file mode 100644
index 0000000..f3b18f4
--- /dev/null
+++ b/doc/periodic.fig
@@ -0,0 +1,109 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+5 1 0 1 0 7 50 0 -1 0.000 0 0 0 1 4650.000 5156.250 3750 4800 4800 4200 5550 4800
+ 1 1 4.00 60.00 120.00
+5 1 0 1 0 7 50 0 -1 0.000 0 0 0 1 4050.000 5043.750 4950 5400 3900 6000 3150 5400
+ 1 1 4.00 60.00 120.00
+6 975 4875 4125 5325
+6 975 4875 4125 5325
+6 975 4875 1425 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 5025 1275 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 5175 1275 5025
+-6
+6 1275 4875 1725 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1425 5025 1575 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1425 5175 1575 5025
+-6
+6 3675 4875 4125 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3825 5025 3975 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3825 5175 3975 5025
+-6
+6 3375 4875 3825 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3525 5025 3675 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 3525 5175 3675 5025
+-6
+6 975 4875 1425 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 5025 1275 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1125 5175 1275 5025
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 1200 5100 3900 5100
+-6
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 1800 5100 75 75 1800 5100 1875 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2100 5100 75 75 2100 5100 2175 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2400 5100 75 75 2400 5100 2475 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2700 5100 75 75 2700 5100 2775 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3000 5100 75 75 3000 5100 3075 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3300 5100 75 75 3300 5100 3375 5100
+-6
+6 4575 4875 7725 5325
+6 4575 4875 7725 5325
+6 4575 4875 5025 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 5025 4875 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 5175 4875 5025
+-6
+6 4875 4875 5325 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5025 5025 5175 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 5025 5175 5175 5025
+-6
+6 7275 4875 7725 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7425 5025 7575 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7425 5175 7575 5025
+-6
+6 6975 4875 7425 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7125 5025 7275 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7125 5175 7275 5025
+-6
+6 4575 4875 5025 5325
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 5025 4875 5175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4725 5175 4875 5025
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 4800 5100 7500 5100
+-6
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5400 5100 75 75 5400 5100 5475 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5700 5100 75 75 5700 5100 5775 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6000 5100 75 75 6000 5100 6075 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6300 5100 75 75 6300 5100 6375 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6600 5100 75 75 6600 5100 6675 5100
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6900 5100 75 75 6900 5100 6975 5100
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4
+ 1 1 4.00 60.00 120.00
+ 1350 4800 1350 3600 6750 3600 6750 4800
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 1 4
+ 1 1 4.00 60.00 120.00
+ 7350 5400 7350 6600 1950 6600 1950 5400
+4 0 0 50 0 2 12 0.0000 4 135 1245 2025 4725 PROCESSOR 0\001
+4 0 0 50 0 2 12 0.0000 4 135 1245 5475 5625 PROCESSOR 1\001
+4 0 0 50 0 2 16 0.0000 4 165 165 4050 3450 B\001
+4 0 0 50 0 2 16 0.0000 4 165 165 4575 6975 B\001
+4 0 0 50 0 2 16 0.0000 4 165 165 5400 4350 A\001
+4 0 0 50 0 2 16 0.0000 4 165 165 3150 5925 A\001