Commit 1bbea9fa authored by Chris Cantwell's avatar Chris Cantwell
Browse files

Precompiled package installation instructions

Passed through getting started section and ADRSolver docs.
parent 370bf399
\chapter{Installation}
Nektar++ is available in both a source-code distribution and a number of
pre-compiled binary packages for a number of operating systems. We recommend
using the pre-compiled packages if you wish to use existing Nektar++ solvers for
simulation and do not need to perform additional code development.
\input{precompiled}
\input{source}
......@@ -2,7 +2,7 @@
\label{s:installation:debian}
Binary packages are available for current Debian/Ubuntu based Linux
distributions. These can be installed through the use of standard system package
management utilities such as Apt if administrative access is
management utilities, such as Apt, if administrative access is
available.
\begin{enumerate}
......@@ -56,16 +56,15 @@ following contents
\begin{lstlisting}[style=BashInputStyle]
[Nektar]
name=nektar
baseurl=<baseurl>
\end{lstlisting}
Add a line specifying the \inlsh{baseurl}, depending on the version of your
distribution:
substituting \inlsh{<baseurl>} for the appropriate line from the table below.
{\small
\begin{center}
\begin{tabular}{ll}
\toprule
Distribution & baseurl \\
Distribution & \inlsh{<baseurl>} \\
\midrule
Fedora 20 &
\texttt{http://ww.nektar.info/fedora/20/\$basearch}\\
......@@ -75,7 +74,7 @@ Fedora 20 &
}
\begin{notebox}
The \inltt{\$basearch} variable is replaced automatically by Yum with
The \inltt{\$basearch} variable is automatically replaced by Yum with
the architecture of your system.
\end{notebox}
......
\section{Installing from Source}
\label{s:installation:source}
This section explains how to build Nektar++ from the source-code package. We
recommend using pre-built binaries for your distribution, if available. See
Sections~\ref{s:installation:debian}-\ref{s:installation:osx}.
This section explains how to build Nektar++ from the source-code package.
Nektar++ uses a number of third-party libraries. Some of these are required,
others are optional. It is generally more straightforward to use
versions of these libraries supplied pre-packaged for your operating system,
but if you run into difficulties with compilation errors or failing regression tests, the Nektar++
build system can automatically build tried and tested versions of these
libraries for you. This requires enabling the relevant options
in the CMake configuration.
% \begin{custombox}{Warning}{\bcdanger}{red}
% Don't do this.
% \end{custombox}
others are optional. It is generally more straightforward to use versions of
these libraries supplied pre-packaged for your operating system, but if you run
into difficulties with compilation errors or failing regression tests, the
Nektar++ build system can automatically build tried-and-tested versions of these
libraries for you. This requires enabling the relevant options in the CMake
configuration.
\subsection{Obtaining the source code}
......@@ -26,9 +20,9 @@ There are two ways to obtain the source code for \nekpp:
\item Clone the git repository
\begin{itemize}
\item Using anonymous access. This does not require
credentials but any changes to the code cannot be pushed to the repository. Use
this if you would like to try using Nektar++ and do not intend to be an active
developer.
credentials but any changes to the code cannot be pushed to the
public repository. Use this initially if you would like to try using
Nektar++.
\begin{lstlisting}[style=BashInputStyle]
git clone http://gitlab.nektar.info/clone/nektar.git nektar++
\end{lstlisting}
......@@ -37,6 +31,10 @@ There are two ways to obtain the source code for \nekpp:
\begin{lstlisting}[style=BashInputStyle]
git clone git@gitlab.nektar.info:nektar.git nektar++
\end{lstlisting}
\begin{tipbox}
You can easily switch to using the authenticated access from anonymous
access at a later date.
\end{tipbox}
\end{itemize}
\end{itemize}
......@@ -46,7 +44,7 @@ There are two ways to obtain the source code for \nekpp:
\begin{itemize}
\item CMake
\item BLAS and LAPACK
\item Modern C++ compiler: g++, icpc, etc
\item A modern C++ compiler: g++, icpc, etc
\end{itemize}
This software should be available through your Linux distribution.
......@@ -267,7 +265,163 @@ From a terminal (Applications->Utilities->Terminal):
\subsection{Windows}
3.4/UserGuide/Compile/Windows
The following software must be pre-installed on your system:
\begin{itemize}
\item Microsoft Visual Studio 2008
\begin{itemize}
\item Visual Studio 2008 Service Pack 1 is required
\end{itemize}
\item Python Compiler 2.7.2+ (download from
\url{http://www.http//python.org/download/})
\item CMake 2.8.7+ (download from \url{http://www.cmake.org/HTML/index.html})
\begin{itemize}
\item When prompted, select the option to add CMake to the system PATH.
\end{itemize}
\item WinRAR (download from \url{http://www.rarlab.com/download.htm})
\end{itemize}
\newcommand{\nekver}{\input{../../VERSION}}
\subsubsection{Unpack the tarballs}
\begin{itemize}
\item Unpack the \inlsh{nektar++-\nekver.tar.gz} file using
WinRAR
\item Unpack the \inlsh{ThirdParty-\nekver.tar.gz} file using WinRAR
\item Rename the resulting directory to \inlsh{ThirdParty} and put it in
\inlsh{nektar++-\nekver}. (This will mean \inlsh{library} and
\inlsh{ThirdParty} are both sub-directories of the original
\inlsh{nektar++-\nekver}.) Note: Some windows version do not
recognise the path of a folder which has '++' in the name. If you think that
your windows version can not handle path containing special characters, you
should rename \inlsh{nektar++-\nekver} to
\inlsh{nektar-\nekver}.
\end{itemize}
\subsubsection{Building ThirdParty libraries}
\begin{itemize}
\item \textbf{TinyXML} Extract the \inlsh{tinyxml\_2\_4\_3.zip} archive into
the ThirdParty directory using WinRAR. This will create a \inlsh{tinyxml}
sub-directory.
\item \textbf{Loki} Extract the \inlsh{loki-0.1.3.tar.bz2} archive into the
ThirdParty directory using WinRAR. This will create a \inlsh{loki-0.1.3}
sub-directory.
\item \textbf{Mod-METIS} Extract the \inlsh{modmetis-4.0.tar.bz2} archive
into the ThirdParty directory using WinRAR. This will create a
\inlsh{modmetis-4.0} sub-directory.
\begin{itemize}
\item Open a command-line terminal and change to
\inlsh{ThirdParty\textbackslash modmetis-4.0\textbackslash build}.
\item Run
\begin{lstlisting}[style=BashInputStyle]
cmake ..\
vcbuild "ModifiedMetis.sln"
vcbuild "INSTALL.vcproj"
\end{lstlisting}
\end{itemize}
\item \textbf{NIST SparseBLAS} Extract the \inlsh{spblastk0.9b} archive
into the ThirdParty directory using WinRAR. This will create a
\inlsh{spblastk0.9b} sub-directory.
\begin{itemize}
\item From a command-line terminal change to
\inlsh{ThirdParty\textbackslash spblastk0.9b\textbackslash build}.
\item Run
\begin{lstlisting}[style=BashInputStyle]
cmake ..\
vcbuild "NistSparseBlasToolkit.sln"
vcbuild "INSTALL.vcproj"
\end{lstlisting}
\end{itemize}
\item \textbf{BLAS/LAPACK} Extract the \inlsh{blaslapack-dll.zip} archive
into the ThirdParty directory using WinRAR. This will create
\inlsh{blas\_win32.*} and \inlsh{lapack\_win32.*} files in the ThirdParty
directory.
\item \textbf{ZLib} Extract the \inlsh{zlib-1.2.3.tar.bz2} archive using
WinRAR. This will create a \inlsh{zlib-1.2.3} sub-directory.
\item \textbf{Boost} Extract the \inlsh{boost\_1\_49\_0.tar.bz2} archive using
WinRAR. This will create a {{{boost\_1\_49\_0}}} sub-directory.
\begin{itemize}
\item Open a command-line terminal and change to the \inlsh{boost\_1\_49\_0}
directory and run:
\begin{lstlisting}[style=BashInputStyle]
bootstrap.bat
b2.exe -s ZLIB_SOURCE=..\..\..\..\zlib-1.2.3 \
--prefix=..\boost toolset=msvc-9.0 install
\end{lstlisting}
\end{itemize}
\begin{notebox}
Boost might not be able to find the \inlsh{zlib-1.2.3} directory specified
by the relative path in the command line above. If this happens, you can
replace the relative path with the absolute path of the \inlsh{zlib-1.2.3}
directory (surround it in quotes).
\end{notebox}
\end{itemize}
\subsubsection{Building Nektar++}
Change to the \inlsh{nektar++-\nekver\textbackslash builds} directory.
\begin{lstlisting}[style=BashInputStyle]
cmake ..\
vcbuild "Nektar++.sln"
vcbuild "INSTALL.vcproj"
\end{lstlisting}
To modify the default configuration use \inlsh{cmake -i ..\textbackslash} or use
the CMake-gui application.
\subsubsection{Notes on building on windows 7 64 bit with Visual Studio 10}
To get a build working on a windows 7 64 bit machine with VS10, the following
modifications were helpful or necessary:
\begin{itemize}
\item Instead of vcbuild (which doesn't exist in VS10) use msbuild.
\item You may need to run \\ \inlsh{C:\textbackslash Program Files
(x86)\textbackslash Microsoft Visual Studio 10.0\textbackslash
VC\textbackslash vcvarsall.bat} \\ first to set up some registry entries to run
msbuild.
Try without first.
\item You will probably wish to put msbuild into your path
\item project files created by cmake are likely to have the extension .vcxproj
rather than .vcproj.
\item When running b2.exe, provide the full path to zlib. Not doing so will only
cause an error later when running cmake for Nektar++
\item When running b2.exe, use toolset=msvc-10.0 instead of toolset=msvc-9.0
\item When using cmake for nektar++, it is helpful to use the cmake gui
\item Using the cmake gui, set the BOOST\_ROOT variable to the appropriate path
for boost * Set Boost\_USE\_STATIC\_LIBS = ON (I did this by editing
CMakeLists.txt, but setting it from the gui should work)
\item When running msbuild "Nektar++.sln" I got error can't find zlib.lib. As a
workaround, copy the files zlibd.lib (two of them) and rename the copies zlib.lib.
However, I believe these are the debug builds, so it would be better to work
out how to build in release mode.
\item At this stage, when running msbuild "Nektar++.sln", I got boost link
errors.
To fix them, look for the line
\begin{lstlisting}[style=BashInputStyle]
ADD_DEFINITIONS(-DBOOST_ALL_NO_LIB -DBOOST_PROGRAM_OPTIONS_DYN_LINK \
-DBOOST_IOSTREAMS_DYN_LINK -DBOOST_THREAD_DYN_LINK)
\end{lstlisting}
in the \inlsh{CMakeLists.txt} file and comment it out (and run cmake again)
\item At this point, when building Nektar, linking against boost is fine, but I
got a compile error in TestData.cpp. This could be fixed by editing TestData.cpp
and replacing the line
\begin{lstlisting}
m_doc = new TiXmlDocument(pFilename.file_string().c_str());
\end{lstlisting}
with
\begin{lstlisting}
m_doc =new TiXmlDocument(pFilename.string().c_str());
\end{lstlisting}
\end{itemize}
\begin{notebox}
The step of building INSTALL.vcproj causes executables and dlls to be copied
into a directory \inlsh{<path>\textbackslash
nektar\textbackslash builds-test\textbackslash dist\textbackslash bin}.
The executables should be run from here so that they can find the dlls they need.
\end{notebox}
If you wish to put a breakpoint in to step through Nektar++, you may need to run
from the folder the executable was built in so that the pdb files are in the
expected place. Then a workaround is to copy the dlls into that folder.
\subsection{CMake Option Reference}
\label{s:installation:source:cmake}
......
This diff is collapsed.
<?xml version="1.0" encoding="UTF-8"?>
<NEKTAR>
<GEOMETRY DIM="1" SPACE="1">
<VERTEX>
<V ID="0"> -1.0 0.0 0.0</V>
<V ID="1"> -0.8 0.0 0.0</V>
<V ID="2"> -0.6 0.0 0.0</V>
<V ID="3"> -0.4 0.0 0.0</V>
<V ID="4"> -0.2 0.0 0.0</V>
<V ID="5"> 0.0 0.0 0.0</V>
<V ID="6"> 0.2 0.0 0.0</V>
<V ID="7"> 0.4 0.0 0.0</V>
<V ID="8"> 0.6 0.0 0.0</V>
<V ID="9"> 0.8 0.0 0.0</V>
<V ID="10"> 1.0 0.0 0.0</V>
</VERTEX>
<ELEMENT>
<S ID="0"> 0 1 </S>
<S ID="1"> 1 2 </S>
<S ID="2"> 2 3 </S>
<S ID="3"> 3 4 </S>
<S ID="4"> 4 5 </S>
<S ID="5"> 5 6 </S>
<S ID="6"> 6 7 </S>
<S ID="7"> 7 8 </S>
<S ID="8"> 8 9 </S>
<S ID="9"> 9 10 </S>
</ELEMENT>
<COMPOSITE>
<C ID="0"> S[0-9] </C>
<C ID="1"> V[0] </C>
<C ID="2"> V[10] </C>
</COMPOSITE>
<DOMAIN> C[0] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" FIELDS="u" TYPE="GLL_LAGRANGE_SEM" NUMMODES="4"/>
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
<P> FinTime = 20 </P>
<P> TimeStep = 0.01 </P>
<P> NumSteps = FinTime/TimeStep </P>
<P> IO_CheckSteps = 100000 </P>
<P> IO_InfoSteps = 100000 </P>
<P> advx = 1 </P>
<P> advy = 0 </P>
</PARAMETERS>
<SOLVERINFO>
<I PROPERTY="EQTYPE" VALUE="UnsteadyAdvection"/>
<I PROPERTY="Projection" VALUE="DisContinuous"/>
<I PROPERTY="AdvectionType" VALUE="FRDG"/>
<I PROPERTY="UpwindType" VALUE="Upwind"/>
<I PROPERTY="TimeIntegrationMethod" VALUE="ClassicalRungeKutta4"/>
</SOLVERINFO>
<VARIABLES>
<V ID="0"> u </V>
</VARIABLES>
<BOUNDARYREGIONS>
<B ID="0"> C[1] </B>
<B ID="1"> C[2] </B>
</BOUNDARYREGIONS>
<BOUNDARYCONDITIONS>
<REGION REF="0">
<P VAR="u" VALUE="[1]"/>
</REGION>
<REGION REF="1">
<P VAR="u" VALUE="[0]"/>
</REGION>
</BOUNDARYCONDITIONS>
<FUNCTION NAME="AdvectionVelocity">
<E VAR="Vx" VALUE="advx"/>
</FUNCTION>
<FUNCTION NAME="InitialConditions">
<E VAR="u" VALUE="exp(-20.0*x*x)"/>
</FUNCTION>
<FUNCTION NAME="ExactSolution">
<E VAR="u" VALUE="exp(-20.0*x*x)"/>
</FUNCTION>
</CONDITIONS>
</NEKTAR>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<NEKTAR xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="http://www.nektar.info/schema/nektar.xsd">
<GEOMETRY DIM="2" SPACE="2">
<VERTEX>
<V ID="0"> -1.000000000000000 3.500000000000000 0.0 </V>
<V ID="1"> -1.000000000000000 0.500000000000000 0.0 </V>
<V ID="2"> -1.000000000000000 2.500000000000000 0.0 </V>
<V ID="3"> -1.000000000000000 1.500000000000000 0.0 </V>
<V ID="4"> 3.800000000000000 4.500000000000000 0.0 </V>
<V ID="5"> 0.200000000000000 4.500000000000000 0.0 </V>
<V ID="6"> 2.900000000000000 4.500000000000000 0.0 </V>
<V ID="7"> 2.000000000000000 4.500000000000000 0.0 </V>
<V ID="8"> 1.100000000000000 4.500000000000000 0.0 </V>
<V ID="9"> 5.000000000000000 0.500000000000000 0.0 </V>
<V ID="10"> 5.000000000000000 3.500000000000000 0.0 </V>
<V ID="11"> 5.000000000000000 1.500000000000000 0.0 </V>
<V ID="12"> 5.000000000000000 2.500000000000000 0.0 </V>
<V ID="13"> 0.200000000000000 -0.500000000000000 0.0 </V>
<V ID="14"> 3.800000000000000 -0.500000000000000 0.0 </V>
<V ID="15"> 1.100000000000000 -0.500000000000000 0.0 </V>
<V ID="16"> 2.000000000000000 -0.500000000000000 0.0 </V>
<V ID="17"> 2.900000000000000 -0.500000000000000 0.0 </V>
<V ID="18"> -0.400000000000000 4.000000000000000 0.0 </V>
<V ID="19"> 4.400000000000000 4.000000000000000 0.0 </V>
<V ID="20"> 4.400000000000000 0.0 0.0 </V>
<V ID="21"> -0.400000000000000 0.0 0.0 </V>
<V ID="22"> -0.040000000000000 2.700000000000000 0.0 </V>
<V ID="23"> 0.920000000000000 1.900000000000000 0.0 </V>
<V ID="24"> 1.880000000000000 1.100000000000000 0.0 </V>
<V ID="25"> 2.840000000000000 0.300000000000000 0.0 </V>
<V ID="26"> -0.119314370713000 1.785562178050000 0.0 </V>
<V ID="27"> 1.713659159880000 0.169773145192000 0.0 </V>
<V ID="28"> 0.677713625957000 1.180143861910000 0.0 </V>
<V ID="29"> -0.188491169544000 0.869785275722000 0.0 </V>
<V ID="30"> 0.715978655871000 0.336366878402000 0.0 </V>
<V ID="31"> 3.289084972900000 0.882472796343000 0.0 </V>
<V ID="32"> 3.682080702820000 1.501561993610000 0.0 </V>
<V ID="33"> 3.972007805980000 2.179240079990000 0.0 </V>
<V ID="34"> 4.218223358320000 2.817871076440000 0.0 </V>
<V ID="35"> 4.379282019760000 3.315489806910000 0.0 </V>
<V ID="36"> 3.668892462910000 3.970508359810000 0.0 </V>
<V ID="37"> 3.155413025260000 3.802413365130000 0.0 </V>
<V ID="38"> 2.269709494930000 3.615953163480000 0.0 </V>
<V ID="39"> 1.341308209110000 3.906056835480000 0.0 </V>
<V ID="40"> 0.934565531168000 3.565834210030000 0.0 </V>
<V ID="41"> 0.461690231830000 3.150972034220000 0.0 </V>
<V ID="42"> 1.383772742880000 2.431995597660000 0.0 </V>
<V ID="43"> 2.324656705230000 1.661732140030000 0.0 </V>
<V ID="44"> 3.642425028600000 3.246403386770000 0.0 </V>
<V ID="45"> 4.022057777820000 3.634175940310000 0.0 </V>
<V ID="46"> 1.833157069900000 2.985307743670000 0.0 </V>
<V ID="47"> 2.755342831120000 2.226765404480000 0.0 </V>
<V ID="48"> 3.179196984040000 2.779077508740000 0.0 </V>
</VERTEX>
<EDGE>
<E ID="0"> 1 21 </E>
<E ID="1"> 13 21 </E>
<E ID="2"> 13 15 </E>
<E ID="3"> 15 16 </E>
<E ID="4"> 16 17 </E>
<E ID="5"> 14 17 </E>
<E ID="6"> 1 3 </E>
<E ID="7"> 1 29 </E>
<E ID="8"> 21 29 </E>
<E ID="9"> 21 30 </E>
<E ID="10"> 13 30 </E>
<E ID="11"> 15 30 </E>
<E ID="12"> 15 27 </E>
<E ID="13"> 16 27 </E>
<E ID="14"> 16 25 </E>
<E ID="15"> 17 25 </E>
<E ID="16"> 3 29 </E>
<E ID="17"> 29 30 </E>
<E ID="18"> 27 30 </E>
<E ID="19"> 25 27 </E>
<E ID="20"> 2 3 </E>
<E ID="21"> 3 26 </E>
<E ID="22"> 26 29 </E>
<E ID="23"> 28 29 </E>
<E ID="24"> 28 30 </E>
<E ID="25"> 24 30 </E>
<E ID="26"> 24 27 </E>
<E ID="27"> 2 26 </E>
<E ID="28"> 26 28 </E>
<E ID="29"> 24 28 </E>
<E ID="30"> 0 2 </E>
<E ID="31"> 2 22 </E>
<E ID="32"> 22 26 </E>
<E ID="33"> 23 26 </E>
<E ID="34"> 23 28 </E>
<E ID="35"> 0 22 </E>
<E ID="36"> 22 23 </E>
<E ID="37"> 23 24 </E>
<E ID="38"> 24 25 </E>
<E ID="39"> 14 25 </E>
<E ID="40"> 0 18 </E>
<E ID="41"> 22 41 </E>
<E ID="42"> 23 42 </E>
<E ID="43"> 24 43 </E>
<E ID="44"> 25 31 </E>
<E ID="45"> 14 20 </E>
<E ID="46"> 18 41 </E>
<E ID="47"> 41 42 </E>
<E ID="48"> 42 43 </E>
<E ID="49"> 31 43 </E>
<E ID="50"> 20 31 </E>
<E ID="51"> 5 18 </E>
<E ID="52"> 40 41 </E>
<E ID="53"> 42 46 </E>
<E ID="54"> 43 47 </E>
<E ID="55"> 31 32 </E>
<E ID="56"> 9 20 </E>
<E ID="57"> 5 40 </E>
<E ID="58"> 40 46 </E>
<E ID="59"> 46 47 </E>
<E ID="60"> 32 47 </E>
<E ID="61"> 9 32 </E>
<E ID="62"> 5 8 </E>
<E ID="63"> 39 40 </E>
<E ID="64"> 38 46 </E>
<E ID="65"> 47 48 </E>
<E ID="66"> 32 33 </E>
<E ID="67"> 9 11 </E>
<E ID="68"> 8 39 </E>
<E ID="69"> 7 8 </E>
<E ID="70"> 38 39 </E>
<E ID="71"> 7 38 </E>
<E ID="72"> 38 48 </E>
<E ID="73"> 33 48 </E>
<E ID="74"> 11 33 </E>
<E ID="75"> 6 7 </E>
<E ID="76"> 37 38 </E>
<E ID="77"> 44 48 </E>
<E ID="78"> 33 34 </E>
<E ID="79"> 11 12 </E>
<E ID="80"> 6 37 </E>
<E ID="81"> 37 44 </E>
<E ID="82"> 34 44 </E>
<E ID="83"> 12 34 </E>
<E ID="84"> 4 6 </E>
<E ID="85"> 36 37 </E>
<E ID="86"> 44 45 </E>
<E ID="87"> 34 35 </E>
<E ID="88"> 10 12 </E>
<E ID="89"> 4 36 </E>
<E ID="90"> 36 45 </E>
<E ID="91"> 35 45 </E>
<E ID="92"> 10 35 </E>
<E ID="93"> 19 45 </E>
<E ID="94"> 4 19 </E>
<E ID="95"> 10 19 </E>
</EDGE>
<ELEMENT>
<T ID="0"> 6 7 16 </T>
<T ID="1"> 0 8 7 </T>
<T ID="2"> 9 17 8 </T>
<T ID="3"> 1 10 9 </T>
<T ID="4"> 2 11 10 </T>
<T ID="5"> 11 12 18 </T>
<T ID="6"> 3 13 12 </T>
<T ID="7"> 14 19 13 </T>
<T ID="8"> 4 15 14 </T>
<T ID="9"> 5 39 15 </T>
<T ID="10"> 21 27 20 </T>
<T ID="11"> 16 22 21 </T>
<T ID="12"> 23 28 22 </T>
<T ID="13"> 17 24 23 </T>
<T ID="14"> 24 25 29 </T>
<T ID="15"> 18 26 25 </T>
<T ID="16"> 19 38 26 </T>
<T ID="17"> 30 31 35 </T>
<T ID="18"> 27 32 31 </T>
<T ID="19"> 32 33 36 </T>
<T ID="20"> 28 34 33 </T>
<T ID="21"> 29 37 34 </T>
<Q ID="22"> 35 41 46 40 </Q>
<Q ID="23"> 36 42 47 41 </Q>
<Q ID="24"> 37 43 48 42 </Q>
<Q ID="25"> 38 44 49 43 </Q>
<Q ID="26"> 39 45 50 44 </Q>
<Q ID="27"> 46 52 57 51 </Q>
<Q ID="28"> 47 53 58 52 </Q>
<Q ID="29"> 48 54 59 53 </Q>
<Q ID="30"> 49 55 60 54 </Q>
<Q ID="31"> 50 56 61 55 </Q>
<Q ID="32"> 57 63 68 62 </Q>
<Q ID="33"> 58 64 70 63 </Q>
<Q ID="34"> 59 65 72 64 </Q>
<Q ID="35"> 60 66 73 65 </Q>
<Q ID="36"> 61 67 74 66 </Q>
<Q ID="37"> 68 70 71 69 </Q>
<Q ID="38"> 71 76 80 75 </Q>
<Q ID="39"> 72 77 81 76 </Q>
<Q ID="40"> 73 78 82 77 </Q>
<Q ID="41"> 74 79 83 78 </Q>
<Q ID="42"> 80 85 89 84 </Q>
<Q ID="43"> 81 86 90 85 </Q>
<Q ID="44"> 82 87 91 86 </Q>
<Q ID="45"> 83 88 92 87 </Q>
<Q ID="46"> 89 90 93 94 </Q>
<Q ID="47"> 91 92 95 93 </Q>
</ELEMENT>
<COMPOSITE>
<C ID="0"> Q[22-47] </C>
<C ID="1"> T[0-21] </C>
<C ID="2"> E[0-1] </C>
<C ID="3"> E[2-5] </C>
<C ID="4"> E[45] </C>
<C ID="5"> E[56] </C>
<C ID="6"> E[67] </C>
<C ID="7"> E[79] </C>
<C ID="8"> E[88] </C>
<C ID="9"> E[94-95] </C>
<C ID="10"> E[84,75,69,62,51,40,30,20,6] </C>
</COMPOSITE>
<DOMAIN> C[0-1] </DOMAIN>
</GEOMETRY>
<EXPANSIONS>
<E COMPOSITE="C[0]" NUMMODES="7" FIELDS="u" TYPE="MODIFIED" />
<E COMPOSITE="C[1]" NUMMODES="7" FIELDS="u" TYPE="MODIFIED" />
</EXPANSIONS>
<CONDITIONS>
<PARAMETERS>
<P> Lambda = 1 </P>