...
 
Commits (68)
......@@ -39,6 +39,8 @@ v5.0.0
- Fix minor bug in ARPACK thirdparty build cmake (!874)
- Added in sum factorisation version for pyramid expnasions and orthogonal
expansion in pyramids (!750)
- Adjust boost third-party compilation to account for different toolset
choices (!886)
- Switch MeshGraph to use factory pattern and add HDF5 geometry support (!900,
!904, !941)
- Restructure the low energy preconditioner to handle pyramidic and variable
......@@ -55,7 +57,7 @@ v5.0.0
- Fix ability to have periodic boundary conditions that are aligned by a
rotation rather than just a translation (!933)
- Added a coupling interface to exchange data between solvers at run time
and a DummySolver to test the implementations (!853, !931, !950, !973)
and a DummySolver to test the implementations (!853, !931, !950, !973, !1017)
- Fix compilation issue with newer Boost versions and clang (!940)
- If only `NEKTAR_BUILD_LIBRARY` is enabled, only libraries up to and including
`MultiRegions` will be built by default (!945)
......@@ -73,7 +75,7 @@ v5.0.0
- Combine and generalise demo code in StdRegions and LocalRegions (!993)
- Fix for error output to allow for custom error streams (!944)
- Fixed bug in ReOrientQuadFacePhysMap (!1003)
- Add NekPy Python interface (!962, !990, !989, !1004)
- Add NekPy Python interface (!962, !990, !989, !1004, !1014, !1061, !1070)
- Fix edge case for ThirdPartyScotch and FindScoth (!1009)
- Fix to populate m_elmtToExpId map if not already set up in GetExpIndex (!1019)
- Added flag to skip periodic BCs while filling Dirichlet BCs in
......@@ -201,10 +203,13 @@ v5.0.0
**Documentation**:
- Added an initial developer's guide (!1001)
- Updated user guide to reflect current implementation (!1051)
- Added manpages for key solvers and utilities (!1051)
**Tester**
- Fix build with boost 1.67 (!947)
- Various change to tests to decrease test time (!1053)
- Extend to support MPI tests with multiple executables (!1085)
**Packaging:**
- Add Dockerfiles and gitlab CI configuration for automatic builds (!1021)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.8)
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.11)
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build,
options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release
RelWithDebInfo MinSizeRel.")
......@@ -70,7 +70,7 @@ IF (CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
ENDIF()
# Find default search paths for OS X; adapted from Stack Overflow question
# 1487752
# 1487752.
IF (APPLE)
EXECUTE_PROCESS(COMMAND which port
RESULT_VARIABLE DETECT_MACPORTS
......
......@@ -91,7 +91,7 @@ find_path (PETSC_DIR include/petsc.h
# Arch Linux path
/opt/petsc/linux-c-opt
# MacPorts path
/opt/local/lib/petsc
${MACPORTS_PREFIX}/lib/petsc
$ENV{HOME}/petsc
DOC "PETSc Directory")
......
......@@ -80,7 +80,11 @@ MACRO(SET_COMMON_PROPERTIES name)
TARGET_COMPILE_DEFINITIONS(${name} PRIVATE _WIN32_WINNT=0x0601)
ELSE ()
# Enable all warnings
TARGET_COMPILE_OPTIONS(${name} PRIVATE -Wpedantic -Wall -Wextra)
TARGET_COMPILE_OPTIONS(${name} PRIVATE -Wall -Wextra)
IF (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
# For GNU compilers add pedantic warnings
TARGET_COMPILE_OPTIONS(${name} PRIVATE -Wpedantic)
ENDIF()
# Temporarily disable warnings about comparing signed and unsigned
TARGET_COMPILE_OPTIONS(${name} PRIVATE -Wno-sign-compare)
# Temporarily disable warnings about narrowing of data types
......@@ -88,6 +92,12 @@ MACRO(SET_COMMON_PROPERTIES name)
IF (NOT CMAKE_CXX_COMPILER_ID MATCHES "Clang")
TARGET_COMPILE_OPTIONS(${name} PRIVATE -fpermissive)
ENDIF()
# Disable dignostic about partially overloaded virtual functions
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
TARGET_COMPILE_OPTIONS(${name} PRIVATE -diag-disable 654)
ENDIF()
IF ( NEKTAR_ERROR_ON_WARNINGS )
TARGET_COMPILE_OPTIONS(${name} PRIVATE -Werror)
ENDIF()
......
......@@ -12,16 +12,16 @@ OPTION(NEKTAR_USE_ARPACK
SET(BUILD_ARPACK OFF)
IF (NEKTAR_USE_ARPACK)
FIND_LIBRARY(ARPACK_LIBRARY NAMES "arpack.1" "arpack" PATHS /opt/local/lib)
FIND_LIBRARY(ARPACK_LIBRARY NAMES "arpack.1" "arpack")
IF (ARPACK_LIBRARY)
MESSAGE(STATUS "Found Arpack: ${ARPACK_LIBRARY}")
MARK_AS_ADVANCED(ARPACK_LIBRARY)
ELSE()
IF(CMAKE_Fortran_COMPILER)
SET(BUILD_ARPACK ON)
SET(BUILD_ARPACK ON)
ELSE()
MESSAGE(FATAL_ERROR "Could not find or build Arpack")
MESSAGE(FATAL_ERROR "Could not find or build Arpack")
ENDIF()
ENDIF()
......
......@@ -77,23 +77,48 @@ IF (THIRDPARTY_BUILD_BOOST)
ENDIF ()
ENDIF()
# Build Boost
# Build Boost: first need to select toolset. Some will have specific
# versions.
SET(TOOLSET_VERSION "")
IF (APPLE)
# macOS should have the darwin toolset regardless of gcc/clang.
SET(TOOLSET darwin)
ELSEIF (WIN32)
IF (MSVC10)
SET(TOOLSET msvc-10.0)
ELSEIF (MSVC11)
SET(TOOLSET msvc-11.0)
ELSEIF (MSVC12)
SET(TOOLSET msvc-12.0)
ELSEIF (MSVC14)
SET(TOOLSET msvc-14.0)
ELSEIF (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
SET(TOOLSET msvc)
IF (MSVC_VERSION EQUAL 1600)
SET(TOOLSET_VERSION 10.0) # Visual Studio 2010
ELSEIF (MSVC_VERSION EQUAL 1700)
SET(TOOLSET_VERSION 11.0) # Visual Studio 2012
ELSEIF (MSVC_VERSION EQUAL 1800)
SET(TOOLSET_VERSION 12.0) # Visual Studio 2013
ELSEIF (MSVC_VERSION EQUAL 1900)
SET(TOOLSET_VERSION 14.0) # Visual Studio 2015
ELSEIF (MSVC_VERSION GREATER 1909 AND MSVC_VERSION LESS 1920)
SET(TOOLSET_VERSION 14.1) # Visual Studio 2017
ELSEIF (MSVC_VERSION GREATER 1919 AND MSVC_VERSION LESS 1930)
SET(TOOLSET_VERSION 14.2) # Visual Studio 2019
ENDIF()
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "Cray")
SET(TOOLSET cray)
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "Intel")
SET(TOOLSET intel)
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
SET(TOOLSET gcc)
SET(TOOLSET_VERSION ${CMAKE_CXX_COMPILER_VERSION})
ELSEIF(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
SET(TOOLSET clang)
SET(TOOLSET_VERSION ${CMAKE_CXX_COMPILER_VERSION})
ELSE()
MESSAGE(STATUS "Unknown compiler for boost, assuming gcc toolset")
SET(TOOLSET gcc)
ENDIF()
IF (TOOLSET_VERSION STREQUAL "")
SET(TOOLSET_CMDLINE ${TOOLSET})
ELSE()
SET(TOOLSET_CMDLINE ${TOOLSET}-${TOOLSET_VERSION})
ENDIF()
IF (NOT WIN32)
EXTERNALPROJECT_ADD(
boost
......@@ -106,7 +131,7 @@ IF (THIRDPARTY_BUILD_BOOST)
BINARY_DIR ${TPBUILD}/boost
TMP_DIR ${TPBUILD}/boost-tmp
INSTALL_DIR ${TPDIST}
CONFIGURE_COMMAND CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} ./bootstrap.sh --prefix=${TPDIST}
CONFIGURE_COMMAND ./bootstrap.sh
BUILD_COMMAND NO_BZIP2=1 ./b2
variant=release
link=shared
......@@ -114,7 +139,8 @@ IF (THIRDPARTY_BUILD_BOOST)
cxxflags="-w"
linkflags="-L${TPDIST}/lib"
${BOOST_FLAGS} ${BOOST_LIB_LIST}
--layout=system toolset=${TOOLSET} install
--prefix=${TPDIST}
--layout=system toolset=${TOOLSET_CMDLINE} install
INSTALL_COMMAND ""
)
ELSE ()
......@@ -136,7 +162,7 @@ IF (THIRDPARTY_BUILD_BOOST)
INSTALL_DIR ${TPDIST}
CONFIGURE_COMMAND call bootstrap.bat
BUILD_COMMAND b2 variant=release
toolset=${TOOLSET}
toolset=${TOOLSET_CMDLINE}
address-model=${ADDRESS_MODEL}
link=shared
runtime-link=shared
......@@ -153,11 +179,24 @@ IF (THIRDPARTY_BUILD_BOOST)
IF (APPLE)
EXTERNALPROJECT_ADD_STEP(boost patch-install-path
COMMAND sed -i ".bak" "s|-install_name \"|&${TPDIST}/lib/|" ${TPBUILD}/boost/tools/build/src/tools/darwin.jam
COMMAND sed -i ".bak" "s|-install_name \"|&${TPDIST}/lib/|"
${TPBUILD}/boost/tools/build/src/tools/darwin.jam
DEPENDERS build
DEPENDEES download)
ENDIF (APPLE)
# Write to jamfile to use appropriate toolset.
SET(cmd_string "using ${TOOLSET} : ${TOOLSET_VERSION}")
SET(cmd_string "${cmd_string} : ${CMAKE_CXX_COMPILER} $<SEMICOLON>")
IF (UNIX)
EXTERNALPROJECT_ADD_STEP(boost conf-project-conf
COMMAND cmake -E echo "${cmd_string}" >
${TPBUILD}/boost/tools/build/src/user-config.jam
DEPENDERS build
DEPENDEES configure)
ENDIF()
# If building ThirdParty zlib, force zlib build before boost
IF (THIRDPARTY_BUILD_ZLIB)
ADD_DEPENDENCIES(boost zlib-1.2.7)
......
......@@ -10,76 +10,91 @@ IF (NEKTAR_BUILD_PYTHON)
CMAKE_DEPENDENT_OPTION(NEKTAR_USE_PYTHON3
"If true, prefer to use Python 3." OFF "NEKTAR_BUILD_PYTHON" OFF)
# Unset any existing python executable/library settings so that
# we can rediscover correct python version if v2/3 settings changed
unset(PYTHON_EXECUTABLE CACHE)
unset(PYTHON_INCLUDE_DIR CACHE)
unset(PYTHON_LIBRARY CACHE)
unset(PYTHON_LIBRARY_DEBUG CACHE)
SET(PYTHONVER 2.7)
IF (NEKTAR_USE_PYTHON3)
SET(PYTHONVER 3.0)
ENDIF()
IF (NOT NEKTAR_PYTHON3_STATUS STREQUAL NEKTAR_USE_PYTHON3)
# Unset any existing python executable/library settings so that we can
# rediscover correct python version if v2/3 settings changed.
IF (DEFINED NEKTAR_PYTHON3_STATUS)
unset(PYTHON_EXECUTABLE CACHE)
unset(PYTHON_INCLUDE_DIR CACHE)
unset(PYTHON_LIBRARY CACHE)
unset(PYTHON_LIBRARY_DEBUG CACHE)
unset(BOOST_PYTHON_LIB CACHE)
unset(BOOST_NUMPY_LIB CACHE)
ENDIF()
# Find Python
FIND_PACKAGE(PythonInterp ${PYTHONVER} REQUIRED)
FIND_PACKAGE(PythonLibsNew ${PYTHONVER} REQUIRED)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
ADD_DEFINITIONS(-DWITH_PYTHON)
# Include headers from root directory for config file.
# Now try to find Boost::Python. For now we are relying entirely on
# distributed versions of this (versus trying to compile via ThirdParty)
# because they come with various names and FindBoost is not really geared up
# for this at present. Therefore this is done separately to avoid lots of
# warnings and extraneous output.
#
# We need to try a few variants, depending on if we're doing Python 2 or
# Python 3. Irritatingly this is all very much distriution dependent so we
# just take our best guess at filenames. Seemingly from Boost 1.67 onwards,
# names are just `python27` and `numpy32` but for now we have to deal with
# this ourselves.
STRING(REPLACE "." ";" BOOST_PYTHON_VERSION ${PYTHONLIBS_VERSION_STRING})
LIST(GET BOOST_PYTHON_VERSION 0 BOOST_PYTHON_VERSION_MAJOR)
LIST(GET BOOST_PYTHON_VERSION 1 BOOST_PYTHON_VERSION_MINOR)
SET(TMP_BOOST_LIST ${NEEDED_BOOST_LIBS})
# If we're using multi-threaded, the existing library likely has a '-mt'
# suffix so we need to append this too.
IF (Boost_SYSTEM_LIBRARY MATCHES "-mt")
SET(BOOST_LIB_SUFFIX "-mt")
ENDIF()
SET(PYTHONVER 2.7)
IF (NEKTAR_USE_PYTHON3)
SET(PYTHONVER 3.0)
ENDIF()
# Find Python
FIND_PACKAGE(PythonInterp ${PYTHONVER} REQUIRED)
FIND_PACKAGE(PythonLibsNew ${PYTHONVER} REQUIRED)
INCLUDE_DIRECTORIES(${PYTHON_INCLUDE_DIRS})
ADD_DEFINITIONS(-DWITH_PYTHON)
# Include headers from root directory for config file.
# Now try to find Boost::Python. For now we are relying entirely on
# distributed versions of this (versus trying to compile via ThirdParty)
# because they come with various names and FindBoost is not really geared up
# for this at present. Therefore this is done separately to avoid lots of
# warnings and extraneous output.
#
# We need to try a few variants, depending on if we're doing Python 2 or
# Python 3. Irritatingly this is all very much distriution dependent so we
# just take our best guess at filenames. Seemingly from Boost 1.67 onwards,
# names are just `python27` and `numpy32` but for now we have to deal with
# this ourselves.
STRING(REPLACE "." ";" BOOST_PYTHON_VERSION ${PYTHONLIBS_VERSION_STRING})
LIST(GET BOOST_PYTHON_VERSION 0 BOOST_PYTHON_VERSION_MAJOR)
LIST(GET BOOST_PYTHON_VERSION 1 BOOST_PYTHON_VERSION_MINOR)
SET(TMP_BOOST_LIST ${NEEDED_BOOST_LIBS})
# If we're using multi-threaded, the existing library likely has a '-mt'
# suffix so we need to append this too.
IF (Boost_SYSTEM_LIBRARY MATCHES "-mt")
SET(BOOST_LIB_SUFFIX "-mt")
ENDIF()
# Try to find Boost::Python
FIND_LIBRARY(BOOST_PYTHON_LIB
NAMES boost_python-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_python-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_LIB_SUFFIX}
PATHS ${Boost_LIBRARY_DIRS})
IF (NOT BOOST_PYTHON_LIB)
MESSAGE(FATAL_ERROR "Could not find Boost Python installation: check it is installed in your distribution.")
ENDIF()
# Try to find Boost.NumPy
FIND_LIBRARY(BOOST_NUMPY_LIB
NAMES boost_numpy-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_numpy-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_LIB_SUFFIX}
PATHS ${Boost_LIBRARY_DIRS})
# Try to find Boost::Python
FIND_LIBRARY(BOOST_PYTHON_LIB
NAMES boost_python-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_python-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_python${BOOST_LIB_SUFFIX}
PATHS ${Boost_LIBRARY_DIRS})
IF (NOT BOOST_PYTHON_LIB)
MESSAGE(FATAL_ERROR "Could not find Boost Python installation: check it is installed in your distribution.")
SET(NEKTAR_PYTHON3_STATUS ${NEKTAR_USE_PYTHON3} CACHE INTERNAL "")
ENDIF()
MESSAGE(STATUS "Found Python: ${PYTHON_EXECUTABLE}")
MESSAGE(STATUS "Found Boost.Python: ${BOOST_PYTHON_LIB}")
# Try to find Boost.NumPy
FIND_LIBRARY(BOOST_NUMPY_LIB
NAMES boost_numpy-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_PYTHON_VERSION_MAJOR}${BOOST_PYTHON_VERSION_MINOR}${BOOST_LIB_SUFFIX}
boost_numpy-py${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_PYTHON_VERSION_MAJOR}${BOOST_LIB_SUFFIX}
boost_numpy${BOOST_LIB_SUFFIX}
PATHS ${Boost_LIBRARY_DIRS})
# If we can't find it, pull it from git and compile it
IF (NOT BOOST_NUMPY_LIB)
INCLUDE(ExternalProject)
IF (CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
SET(WARNING_FLAGS "-Wno-cpp")
ENDIF()
IF (CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
SET(WARNING_FLAGS "-Wno-#warnings")
ENDIF()
EXTERNALPROJECT_ADD(
boost-numpy
PREFIX ${TPSRC}
......@@ -93,7 +108,7 @@ IF (NEKTAR_BUILD_PYTHON)
INSTALL_DIR ${TPDIST}
CONFIGURE_COMMAND ${CMAKE_COMMAND}
-G ${CMAKE_GENERATOR} -DCMAKE_INSTALL_PREFIX:PATH=${TPDIST}
-DCMAKE_CXX_FLAGS="-Wno-cpp"
-DCMAKE_CXX_FLAGS=${WARNING_FLAGS}
-DPYTHON_EXECUTABLE=${PYTHON_EXECUTABLE}
-DBUILD_EXAMPLES=OFF -DBUILD_TESTS=OFF -DLIBRARY_TYPE=STATIC
${TPSRC}/boost-numpy
......@@ -103,7 +118,7 @@ IF (NEKTAR_BUILD_PYTHON)
ELSE()
SET(BOOST_NUMPY_LIB ${TPDIST}/lib/${CMAKE_STATIC_LIBRARY_PREFIX}boost_numpy${CMAKE_STATIC_LIBRARY_SUFFIX})
ENDIF()
INCLUDE_DIRECTORIES(SYSTEM ${TPDIST}/include)
MESSAGE(STATUS "Build Boost.NumPy: ${BOOST_NUMPY_LIB}")
ELSE()
......@@ -111,6 +126,7 @@ IF (NEKTAR_BUILD_PYTHON)
ADD_CUSTOM_TARGET(boost-numpy ALL)
ADD_DEFINITIONS(-DBOOST_HAS_NUMPY)
ENDIF()
CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/cmake/python/setup.py.in ${CMAKE_BINARY_DIR}/setup.py)
ADD_CUSTOM_TARGET(nekpy-install-user
......
......@@ -10,8 +10,8 @@ OPTION(NEKTAR_USE_TINYXML_STL "Use STL with TinyXML library." ON)
MARK_AS_ADVANCED(NEKTAR_USE_TINYXML_STL)
# First search for system TinyXML installs. Hint /opt/local for MacPorts.
FIND_PATH (TINYXML_INCLUDE_DIR tinyxml.h PATHS /opt/local/include)
FIND_LIBRARY(TINYXML_LIBRARY NAMES "tinyxml" PATHS /opt/local/lib)
FIND_PATH (TINYXML_INCLUDE_DIR tinyxml.h)
FIND_LIBRARY(TINYXML_LIBRARY NAMES "tinyxml")
# If we have our library then don't build TinyXML.
IF (TINYXML_INCLUDE_DIR AND TINYXML_LIBRARY)
......
......@@ -6,13 +6,6 @@
#
########################################################################
# Attempt to identify Macports libraries, if they exist and we didn't override
# ZLIB_ROOT on the command line or in ccmake. This prevents cmake warnings later
# on.
IF (NOT DEFINED ZLIB_ROOT)
SET(ZLIB_ROOT /opt/local/)
ENDIF()
# Find a system ZLIB library. If not found enable the THIRDPARTY_BUILD_ZLIB
# option.
FIND_PACKAGE(ZLIB QUIET)
......
CMAKE_MINIMUM_REQUIRED(VERSION 2.8.7)
PROJECT(libccmio)
# compile in Release mode by default
SET(CMAKE_BUILD_TYPE Release CACHE STRING "Choose the type of build, options are: None(CMAKE_CXX_FLAGS or CMAKE_C_FLAGS used) Debug Release RelWithDebInfo MinSizeRel.")
......
......@@ -200,6 +200,91 @@ development team using the {\nek} gitlab website:
Submitting a merge request will automatically trigger the continuous integration (CI) system, which will build and test your code on a range of platforms. You can monitor the progress of these tests from the merge request page. Selecting individual workers will take you to the buildbot website from which you can examine any failures which have occurred.
\section{Documentation and Tutorials}
Documentation for Nektar++ is provided in a number of forms:
\begin{itemize}
\item User Guide (LaTeX, compiled to pdf or html)
\item Source code documentation (Doxygen compiled to html)
\end{itemize}
\subsection{Dependencies}
To build the User Guide and Developer's Guide, the following dependencies are required:
\begin{itemize}
\item texlive-base
\item texlive-latex-extra
\item texlive-science
\item texlive-fonts-recommended
\item imagemagick
\end{itemize}
\subsection{Compiling the User Guide}
To compile the User Guide:
\begin{enumerate}
\item Configure the Nektar++ build tree as normal.
\item Run
\begin{lstlisting}[style=BashInputStyle]
make user-guide-pdf
\end{lstlisting}
to make the PDF version, or run
\begin{lstlisting}[style=BashInputStyle]
make user-guide-html
\end{lstlisting}
to make the HTML version.
\end{enumerate}
\subsection{Developers Guide}
To compile the Developer's Guide:
\begin{enumerate}
\item Configure the Nektar++ build tree as normal.
\item Run
\begin{lstlisting}[style=BashInputStyle]
make developers-guide-pdf
\end{lstlisting}
to make the PDF version, or run
\begin{lstlisting}[style=BashInputStyle]
make developers-guide-html
\end{lstlisting}
to make the HTML version.
\end{enumerate}
\subsection{Compiling the code documentation}
To build the Doxygen documentation, the following dependencies are required:
\begin{itemize}
\item doxygen
\item graphviz
\end{itemize}
To compile the code documentation enable the \inltt{NEKTAR\_BUILD\_DOC} option
in the \inlsh{ccmake} configuration tool.
You can then compile the HTML code documentation using:
\begin{lstlisting}[style=BashInputStyle]
make doc
\end{lstlisting}
\section{Compiling Tutorials}
If you are using a clone of the \nekpp git repository, you can also download
the source for the \nekpp tutorials which is available as a \emph{git submodule}.
\begin{enumerate}
\item From a \nekpp working directory (e.g. \inlsh{\$NEKPP}):
\begin{lstlisting}[style=BashInputStyle]
git submodule init
git submodule update --remote
\end{lstlisting}
\item From your build directory (e.g. \inlsh{\$NEKPP/build}), re-run \inlsh{cmake} to update the build system to include the tutorials
\begin{lstlisting}[style=BashInputStyle]
cmake ../
\end{lstlisting}
\item Compile each required tutorial, for example
\begin{lstlisting}[style=BashInputStyle]
make flow-stability-channel
\end{lstlisting}
\end{enumerate}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
......
.\" Manpage for ADRSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "ADRSolver man page"
.SH NAME
ADRSolver \- solves Advection-diffusion-reaction problems
.SH SYNOPSIS
ADRSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B ADRSolver
solves Advection-diffusion-reaction type partial differential
equations using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework.
The
.B ADRSolver
can solve a range of steady and unsteady scalar problems:
.IP \(em 3
Projection
.IP \(em 3
Laplace equation
.IP \(em 3
Poisson equation
.IP \(em 3
Helmholtz equation
.IP \(em 3
Steady Advection-Diffusion equation (2D only)
.IP \(em 3
Steady Diffusion-Reaction equation (2D only)
.IP \(em 3
Steady Advection-Diffusion-Reaction equation (2D only)
.IP \(em 3
Unsteady Advection equation
.IP \(em 3
Unsteady Diffusion equation
.IP \(em 3
Unsteady Reaction-Diffusion equation (Continuous Galerkin only)
.IP \(em 3
Unsteady Advection-Diffusion equation
.IP \(em 3
Unsteady Inviscid Burgers equation
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B ADRSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B ADRSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for AcousticSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "AcousticSolver man page"
.SH NAME
AcousticSolver \- predicts acoustic wave propagation
.SH SYNOPSIS
AcousticSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B AcousticSolver
predicts acoustic wave propagation using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework. It utilises a splitting technique
which decouples the flow-induced acoustic field from the underlying hydrodynamic
field.
The
.B AcousticSolver
can solve two types of problems:
.IP \(em 3
Linearised Euler Equations
.IP \(em 3
Acoustic Perturbation Equations (APE-1/APE-4)
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B AcousticSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B AcousticSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for CardiacEPSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "CardiacEPSolver man page"
.SH NAME
CardiacEPSolver \- solves models of action potential propagation
.SH SYNOPSIS
CardiacEPSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B CardiacEPSolver
solves models of action potential propagation in cardiac tissue using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework. These models are continuum models and
represent the average of electrical activity over many cells. They are
reaction-diffusion systems, where the reaction terms models the flow of ions in
and out of a cell as a system of ordinary differential equations.
The
.B CardiacEPSolver
can solve the following models
.RS
.IP \(em 3
Monodomain equation
.IP \(em 3
Bidomain equation
.RE
These are coupled to a model of the cardiac action potential. Available models
include:
.RS
.IP \(em 3
Aliev-Panfilov
.IP \(em 3
Courtemanche-Ramirez-Nattel
.IP \(em 3
Fenton-Karma
.IP \(em 3
Fitzhugh-Nagumo
.IP \(em 3
Luo-Rudy
.IP \(em 3
Ten-Tusscher
.RE
among others.
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B CardiacEPSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B CardiacEPSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for CompressibleFlowSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "CompressibleFlowSolver man page"
.SH NAME
CompressibleFlowSolver \- solves unsteady compressible flow problems
.SH SYNOPSIS
CompressibleFlowSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B CompressibleFlowSolver
solves the unsteady compressible Euler or Navier-Stokes equations, in a
discontinuous Galerkin formulation, using the
spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework.
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B CompressibleFlowSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B CompressibleFlowSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for FieldConvert
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "FieldConvert man page"
.SH NAME
FieldConvert \- post-process Nektar++ field files
.SH SYNOPSIS
FieldConvert [ option(s) ] input output
.SH DESCRIPTION
.B FieldConvert
is a utility primarily for the conversion of
.B Nektar++
output binary files into a range of other visualisation formats for analysis.
It is built on the
.B Nektar++
high-order spectral/hp element framework.
It also includes a range of modules for manipulating the output, such as
computing derived fields, extracting planes and isosurfaces or interpolating
onto other grids or point distributions.
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
Print the help message.
.TP 4
.B \-r [ \-\-range ] arg
Define output range to process, where
.I arg
is specified as
.I xmin,xmax,ymin,ymax,zmin,zmax
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Modules and Module Options
.TP 4
.B \-l [ \-\-modules-list ]
Print the list of available modules.
.TP 4
.B \-m [ \-\-module ] arg
Specify module to be used.
.TP 4
.B \-p [ \-\-modules-opt ] arg
Print options for the module given by
.I arg
.SS Advanced Options
.TP 4
.B \-e [ \-\-error ]
Write error of fields for regression checking.
.TP 4
.B \-f [ \-\-forceoutput ]
Force the output to be written without any checks.
.TP 4
.B \-n [ \-\-output-points ] arg
Output at n equispaced points along the collapsed coordinate (for .dat, .vtu).
.TP 4
.B \-\-noequispaced
Do not use equispaced output.
.TP 4
.B \-\-onlyshape arg
Only use element with defined shape, where
.I arg
is, for example,
.I Tetrahedron
.TP 4
.B \-\-output-points-hom-z arg
Specify number of planes in the z-direction for output of Homogeneous 1D
expansions (for .dat, .vtu).
.TP 4
.B \-\-useSessionVariables
Use variables defined in session for output.
.TP 4
.B \-\-useSessionExpansion
Use expansion defined in session.
.SS Parallelisation Options
.TP 4
.B \-\-nparts arg
Process partitions of parallel run in serial. The
.I arg
parameter specifies the number of partitions in the input field file.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To compute the vorticity field
.RS
.B FieldConvert -m vorticity in.xml in.fld out_vorticity.fld
.RE
To convert a field file to an unstructured VTK file
.RS
.B FieldConvert in.xml in.fld out.vtu
.RE
To compute vorticity and write output to an unstructured VTK file
.RS
.B FieldConvert -m vorticity in.xml in.fld out_vorticity.vtu
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for IncNavierStokesSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "IncNavierStokesSolver man page"
.SH NAME
IncNavierStokesSolver \- solves incompressible flow problems
.SH SYNOPSIS
IncNavierStokesSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B IncNavierStokesSolver
solves the incompressible form of the Navier-Stokes partial differential
equations using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework.
The
.B IncNavierStokesSolver
uses a velocity-correction splitting scheme to reduce the solution of a vector
form of the Navier-Stokes equations to a series of scalar problems. The
non-linear advection terms are evaluated, followed by solving a pressure Poisson
problem. Finally, a set of Helmholtz problems are solved to correct the velocity
for the computed pressure field. The solver uses a semi-implicit
time-integration scheme with the advection term evaluated explicitly and the
Poisson and Helmholtz problems being evaluated implicitly.
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B IncNavierStokesSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B IncNavierStokesSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for ADRSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "NekMesh man page"
.SH NAME
NekMesh \- generates, converts and manipulates high-order meshes
.SH SYNOPSIS
.B NekMesh
[option(s)] input output
.SH DESCRIPTION
.B NekMesh
is a high-order finite element mesh generator and general pre-processing
mesh utility, that can be used to either generate meshes directly from an
underlying CAD representation of a geometry, or alternatively to import and
process linear meshes from a range of other mesh generation tools to make them
suitable for high-order simulations.
.B NekMesh
is designed around the concept of modules that run sequentially in a
pipeline.
.B Input modules
read either a file from an external mesh generation utility, or a
.B NekMesh
.B .mcf
mesh configuration file which can be used to read CAD geometry. The input module
is selected based on the input filename.
Optionally, one or more
.B processing modules
can be used to modify the mesh in some way, for e.g. the creation of boundary
layers or the optimisation of the input mesh. Finally, a
.B output module
is used to write out the resulting mesh, depending on the extension of the
filename. All modules typically support a number of options that can be defined
on the command line.
.SH OPTIONS
.TP 4
.B \-h [ \-\-help ]
Prints a help message and program synopsys.
.TP 4
.B \-l [ \-\-modules-list ]
Prints a list of all input, processing and output modules that can be used
within NekMesh.
.TP 4
.B \-p [ \-\-modules-opt ] module
Prints the list of options for a given module.
.TP 4
.B \-m [ \-\-module ] module
Specifies a module to be used. Modules are run in the order that they are
defined in the command line options.
.TP 4
.B \-v [ \-\-verbose ]
Print additional debugging and mesh generation information to screen.
.SH BUGS
No known bugs.
.SH EXAMPLE
As an example, in the simplest case
.B NekMesh
can be used to simply convert files between one format and another; for example
reading a Gmsh file and writing a Nektar++ format file can be achieved with the
command
.RS
.B NekMesh input.msh output.xml
.RE
As a more complex example, the command below:
.RS
.B NekMesh -m varopti:hyperelastic:nq=4 -m jac:list input.gmsh:msh output.xml:xml:uncompress
.RE
runs the following pipeline:
.RS
.IP \(em 3
Load the input.gmsh file as a Gmsh module;
.IP \(em 3
Run the varopti module with the boolean option 'hyperelastic' and setting the
quadrature order to 4;
.IP \(em 3
List any elements that have negative Jacobian with the jac module;
.IP \(em 3
Finally output the mesh as a Nektar++ XML file in an uncompressed form.
.RE
For a list of modules and their options, the
.B \-l
and
.B \-p
options can be used respectively. More advanced usage of
.B NekMesh
can be found in the accompanying user guide.
.SH AUTHOR
David Moxey (d.moxey@exeter.ac.uk)
.\" Manpage for PulseWaveSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "PulseWaveSolver man page"
.SH NAME
PulseWaveSolver \- models pressure-wave propagation in 1D vasculature
.SH SYNOPSIS
PulseWaveSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B PulseWaveSolver
solves 1D partial differential equations governing conservation of mass and
momentum in a network of arteries using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework.
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B PulseWaveSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B PulseWaveSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
.\" Manpage for ShallowWaterSolver
.\" Contact c.cantwell@imperial.ac.uk to correct errors or typos
.TH man 1 "07 Aug 2019" "5.0" "ShallowWaterSolver man page"
.SH NAME
ShallowWaterSolver \- solves depth-integrated wave equations
.SH SYNOPSIS
ShallowWaterSolver [ option(s) ] [ [ session.xml ] ... ]
.SH DESCRIPTION
.B ShallowWaterSolver
solves depth-integrated wave equations of the shallow water type using the spectral/hp element method. It is built on the
.B Nektar++
high-order spectral/hp element framework.
The
.B ShallowWaterSolver
can solve two types of problems:
.IP \(em 3
Linear SWE in primative variables
.IP \(em 3
Non-linear SWE in conservative variables
.SS Further information
For further details and specific configuration options, please consult the
.B Nektar++ user guide
available from the website \(la www.nektar.info \(ra.
.SH OPTIONS
.SS General Options
.TP 4
.B \-h [ \-\-help ]
.TP 4
.B \-I [ \-\-solverinfo ] arg
Overrides a SOLVERINFO property in the XML input files.
.TP 4
.B \-P [ \-\-parameter ] arg
Overrides a PARAMETER in the XML input files.
.TP 4
.B \-v [ \-\-verbose ]
Displays additional diagnostic information during the solver execution.
.TP 4
.B \-V [ \-\-version ]
Prints the version of the Nektar++.
.SS Parallelisation Options
.TP 4
.B \-\-npx arg
Specifies the number of processes in the x-direction.
.TP 4
.B \-\-npy arg
Specifies the number of processes in the y-direction.
.TP 4
.B \-\-npz arg
Specifies the number of processes in the z-direction.
.TP 4
.B \-\-part-info
Output partition information.
.TP 4
.B \-\-part-only N
Partitions the input mesh into N partitions and exits.
.TP 4
.B \-\-part-only-overlapping N
Partitions mesh into N overlapping partitions and exits.
.TP 4
.B \-\-use-ptscotch
Use PT-Scotch for parallel mesh partitioning.
.TP 4
.B \-\-use-scotch
Use Scotch for mesh partitioning.
.SH EXAMPLE
To run the solver on a single input file which contains both the geometry and
the solver parameter specifications
.RS
.B ShallowWaterSolver session.xml
.RE
It is often helpful to separate the geometry specification from the remaining
solver parameters. In this case multiple .xml files may be provided
.RS
.B ShallowWaterSolver session.xml conditions.xml
.RE
.SH BUGS
No known bugs.
.SH AUTHOR
Chris Cantwell (c.cantwell@imperial.ac.uk)
\section{Compiling Documentation}
Documentation for Nektar++ is provided in a number of forms:
\begin{itemize}
\item User Guide (LaTeX, compiled to pdf or html)
\item Source code documentation (Doxygen compiled to html)
\end{itemize}
\subsection{Dependencies}
To build the LaTeX documents (user guide or tutorials), the following
dependencies are required:
\begin{itemize}
\item texlive-base
\item texlive-latex-extra
\item texlive-science
\item texlive-fonts-recommended
\item imagemagick
\end{itemize}
To build the Doxygen documentation, the following dependencies are required:
\begin{itemize}
\item doxygen
\item graphviz
\end{itemize}
\subsection{Compiling the User Guide}
To compile the User Guide:
\begin{enumerate}
\item Configure the Nektar++ build tree as normal.
\item Run
\begin{lstlisting}[style=BashInputStyle]
make user-guide-pdf
\end{lstlisting}
to make the PDF version, or run
\begin{lstlisting}[style=BashInputStyle]
make user-guide-html
\end{lstlisting}
to make the HTML version.
\end{enumerate}
\subsection{Compiling the code documentation}
To compile the code documentation enable the \inltt{NEKTAR\_BUILD\_DOC} option
in the \inlsh{ccmake} configuration tool.
You can then compile the HTML code documentation using:
\begin{lstlisting}[style=BashInputStyle]
make doc
\end{lstlisting}
\section{Compiling Tutorials}
If you are using a clone of the \nekpp git repository, you can also download
the source for the \nekpp tutorials which is available as a \emph{git submodule}.
\begin{enumerate}
\item From a \nekpp working directory (e.g. \inlsh{\$NEKPP}):
\begin{lstlisting}[style=BashInputStyle]
git submodule init
git submodule update --remote
\end{lstlisting}
\item From your build directory (e.g. \inlsh{\$NEKPP/build}), re-run \inlsh{cmake} to update the build system to include the tutorials
\begin{lstlisting}[style=BashInputStyle]
cmake ../
\end{lstlisting}
\item Compile each required tutorial, for example
\begin{lstlisting}[style=BashInputStyle]
make flow-stability-channel
\end{lstlisting}
\end{enumerate}
......@@ -8,5 +8,3 @@ solvers for simulation and do not need to perform additional code development.
\input{precompiled}
\input{source}
\input{doc}
......@@ -14,12 +14,18 @@ available.
\toprule
Distribution & Repository \\
\midrule
Debian 10.0 (buster) &
\texttt{deb http://www.nektar.info/debian-buster buster contrib} \\
Debian 9.0 (stretch) &
\texttt{deb http://www.nektar.info/debian-stretch stretch contrib} \\
Debian 8.0 (jessie) &
\texttt{deb http://www.nektar.info/debian-jessie jessie contrib} \\