\chapter{Frequently Asked Questions}

\section{Compilation and Testing}

\textbf{Q. I compile Nektar++ successfully but, when I run ctest, all the
tests fail. What might be wrong?}

On Linux or Mac, if you compile the ThirdParty version of Boost, rather than
using version supplied with your operating system (or MacPorts on a Mac), the
libraries will be installed in the \inlsh{ThirdParty/dist/lib} subdirectory of
your Nektar++ directory. When Nektar++ executables are run, the Boost libraries
will not be found as this path is not searched by default. To allow the Boost
libraries to be found set the following environmental variable, substituting
\inlsh{\${NEKTAR\_HOME}} with the absolute path of your Nektar++ directory:

\begin{itemize}
\item On Linux (sh, bash, etc)
\begin{lstlisting}[style=BashInputStyle]
export LD_LIBRARY_PATH=${NEKTAR_HOME}/ThirdParty/dist/lib
\end{lstlisting}
or (csh, etc)
\begin{lstlisting}[style=BashInputStyle]
setenv LD_LIBRARY_PATH ${NEKTAR_HOME}/ThirdParty/dist/lib
\end{lstlisting}
\item On Mac
\begin{lstlisting}[style=BashInputStyle]
export DYLD_LIBRARY_PATH=${NEKTAR_HOME}/ThirdParty/dist/lib
\end{lstlisting}
\end{itemize}

\textbf{Q. How to I compile Nektar++ to run in parallel?}

Parallel execution of all Nektar++ solvers is available using MPI. To compile
using MPI, enable the \inlsh{NEKTAR\_USE\_MPI} option in the CMake
configuration.
On recent versions of MPI, the solvers can still be run in serial when compiled
with MPI. More information on Nektar++ compilation options is available in
Section~\ref{s:installation:source:cmake}.


\textbf{Q. When running any Nektar++ executable on Windows, I receive an error
that zlib.dll cannot be found. How do I fix this?}

Windows searches for DLL files in directories specified in the PATH
environmental variable. You should add the location of the ThirdParty files to
your path. To fix this (example for Windows XP):
\begin{itemize}
\item As an administrator, open ''System Properties'' in control panel, select
the ''Advanced'' tab, and select ''Environment Variables''.
\item Edit the system variable `path` and append

\inlsh{C:\textbackslash path\textbackslash
to\textbackslash nektar++\textbackslash ThirdParty\textbackslash
dist\textbackslash bin}

to the end, replacing
\inlsh{path\textbackslash to\textbackslash nektar++} appropriately.
\end{itemize}


\section{Usage}
\textbf{Q. How do I run a solver in parallel?}

In a desktop environment, simply prefix the solver executable with the
\inlsh{mpirun} helper. For example, to run the Incompressible Navier-Stokes
solver on a 4-core desktop computer, you would run
\begin{lstlisting}[style=BashInputStyle]
mpirun -np 4 IncNavierStokesSolver Cyl.xml
\end{lstlisting}
In a cluster environment, using PBS for example, the \inlsh{mpiexec} command
should be used.


\textbf{Q. How can I generate a mesh for use with Nektar++?}

Nektar++ supports a number of mesh input formats. These are converted to the
Nektar++ native XML format (see Section~\ref{s:xml}) using the
MeshConvert utility (see Section~\ref{s:utilities:meshconvert}. Supported
formats include:
\begin{itemize}
\item Gmsh (.msh) 
\item Polygon (.ply)
\item Nektar (.rea) 
\item Semtex (.sem)
\end{itemize}