Commit 25af88f4 authored by Jean-Noël Grad's avatar Jean-Noël Grad
Browse files

Fix 756 Doxygen warnings

Delete Doxygen blocks duplicated in both .h and .cpp files.
Fix incorrect argument names in \param blocks. Fix filenames
in \file blocks. Fix broken Doxygen syntax (broken numerated
lists containing more than 9 items, invalid HTML tags, broken
links in \ref and malformed math equations). Wrap code blocks
inside \code ... \endcode.
parent 26462f8e
......@@ -236,7 +236,7 @@ There is a third sweep concept called "Sweep on Block" where the members of the
are in fact block local data.\n
This is described in more detail here: \ref sweepTimeloop_onBlock
The next tutorial covers writing a real algorithm, which also requires communication among blocks: \ref tutorial03
The next tutorial covers writing a real algorithm, which also requires communication among blocks: \ref tutorial_basics_03
\tableofcontents
......
......@@ -3,7 +3,7 @@ namespace walberla{
/**
\page tutorial_codegen03 Tutorial - Code Generation 3: Advanced LBM Code Generation
\section overview Overview
\section advancedlbmcodegen_overview Overview
This tutorial demonstrates how to use [pystencils](https://pycodegen.pages.i10git.cs.fau.de/pystencils) and [lbmpy](https://pycodegen.pages.i10git.cs.fau.de/lbmpy) to generate highly optimised and hardware-specific Lattice Boltzmann simulation code within the waLBerla framework. Other than in \ref tutorial_codegen02, we will be generating a full LBM sweep instead of a lattice model class. Furthermore, we will generate a communication pack info class and a sweep to initialise the PDF field. A hardware-specific implementation of a NoSlip boundary handler will also be generated. Those components will then be combined in a waLBerla application for simulating the same shear flow scenario as in the previous tutorial.
......
......@@ -5,7 +5,7 @@ namespace walberla {
\brief A configurable application for simple LBM simulations
\section tutorial04_overview Overview
\section tutorial01_overview Overview
In this tutorial, we finally built a fully functional lattice Boltzmann application with the following features:
......@@ -19,7 +19,7 @@ there is not much code that we actually have to implement ourselves.
\image html tutorial_lbm01_channel.png "airfoil (loaded from a grayscale image) in a 2D channel"
\section tutorial04_paramfile Parameter File
\section tutorial01_paramfile Parameter File
This application will be fully configurable by a parameter file so that no recompilation is necessary if
some parameters or the geometry has to be changed.
......@@ -69,9 +69,9 @@ auto blocks = blockforest::createUniformBlockGridFromConfig( walberlaEnv.config(
This function assumes that a "DomainSetup" block exists. For a detailed description of possible configuration parameters,
see blockforest::createUniformBlockGridFromConfig().
\section tutorial04_lbmdatastructures Lattice Boltzmann Data Structures
\section tutorial01_lbmdatastructures Lattice Boltzmann Data Structures
\subsection tutorial04_latticemodel Lattice Model
\subsection tutorial01_latticemodel Lattice Model
\code
typedef lbm::D2Q9< lbm::collision_model::SRT > LatticeModel_T;
......@@ -95,7 +95,7 @@ A lattice model defines the basic ingredients needed for an LBM simulation:
For a more detailed description of lattice models, see lbm::LatticeModelBase
\subsection tutorial04_fields Fields
\subsection tutorial01_fields Fields
\code
typedef lbm::PdfField< LatticeModel_T > PdfField_T;
......@@ -129,7 +129,7 @@ BlockDataID pdfFieldId = lbm::addPdfFieldToStorage( blocks, "pdf field", lattic
BlockDataID flagFieldId = field::addFlagFieldToStorage< FlagField_T >( blocks, "flag field" );
\endcode
\subsection tutorial04_boundary Boundary Handling
\subsection tutorial01_boundary Boundary Handling
waLBerla comes with a set of lattice Boltzmann boundary conditions. They can be found in folder
lbm/boundary. All implement a common concept.
......@@ -186,7 +186,7 @@ BlockDataID boundaryHandlingId = BHFactory::addBoundaryHandlingToStorage(
boundariesConfig.getParameter< real_t > ( "pressure1", real_c( 1.0 ) ) );
\endcode
\subsection tutorial04_geometry Geometry
\subsection tutorial01_geometry Geometry
To specify where boundaries are located, we could now iterate all blocks, retrieve the boundary handler which
was added as block data, and use its member functions like boundary::BoundaryHandling::forceFlag() to setup the domain.
......@@ -210,7 +210,7 @@ have a look at the documentation of walberla::geometry::initBoundaryHandling().
marked, the remaining cells are tagged with the "domain" flag, i.e. as cells that should be updated by the LBM kernel.
\subsection tutorial04_timeloop Sweep and Time Loop Setup
\subsection tutorial01_timeloop Sweep and Time Loop Setup
Having completed the domain setup, the next step is to add all the necessary steps/algorithms to the time loop:
- communication to synchronize the ghost layer of the PdfField
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file 04_BasicLBM_ExemplaryExtensions.cpp
//! \file 02_BasicLBM_ExemplaryExtensions.cpp
//! \author Florian Schornbaum <florian.schornbaum@fau.de>
//! \author Martin Bauer <martin.bauer@fau.de>
//
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file LBLidDrivenCavity.cpp
//! \file 03_LBLidDrivenCavity.cpp
//! \author Florian Schornbaum <florian.schornbaum@fau.de>
//
//======================================================================================================================
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file 06_LBBoundaryConditions.cpp
//! \file 06_LBBoundaryCondition.cpp
//! \author Helen Schottenhamml <helen.schottenhamml@fau.de>
//
//======================================================================================================================
......
......@@ -13,7 +13,7 @@ The physical systems of interest are usually described by a set of partial diffe
These boundary conditions are imposed by the physical system through, e.g., walls, inflows, outflows, etc. \n
For discrete numerical schemes, the situation is slightly different. Here, boundary conditions are part of the solution routine, and different implementations of the same physical boundary condition may alter the result.
Especially in lattice Boltzmann methods, there is a whole zoo of boundary conditions. This can be easily explained by the fact that boundaries are usually prescribed in terms of macroscopic variables.
lattice Boltzmann methods, however, are determined by a set of mesoscopic variables \$f_i(\mathbf{x}, t)$. Different sets of distribution functions may lead to the same hydrodynamic behavior. Eventually, this leads to the question of how to prescribe the mesoscopic variables.\n
lattice Boltzmann methods, however, are determined by a set of mesoscopic variables \f$f_i(\mathbf{x}, t)\f$. Different sets of distribution functions may lead to the same hydrodynamic behavior. Eventually, this leads to the question of how to prescribe the mesoscopic variables.\n
In the following, we will discuss different approaches for wall, inflow and outflow boundary conditions and their realization in `waLBerla`. You will learn about the differences between them, their limitations, and how to use them.\n
Note that we will not discuss the generation of boundary conditions with `lbmpy`. For this, please refer to \ref tutorial_codegen03.
......@@ -271,7 +271,7 @@ As this scheme has some deficiencies (accuracy, need for explicitly enforcing th
\section tutorial06_pressureBC Pressure Boundary Conditions
Now that we have discussed inflows and walls in great detail, only the pressure boundary conditions for the outflows are left.\n
As for the velocity boundary conditions, there are multiple ways to enforce a certain pressure at an outlet. In lattice Boltzmann solvers, however, it is usually the density that is prescribed, as it is more directly related to the pdfs. As density and pressure, in turn, are linked via \$p = c_s^2 \rho$, this is perfectly legitimate.
As for the velocity boundary conditions, there are multiple ways to enforce a certain pressure at an outlet. In lattice Boltzmann solvers, however, it is usually the density that is prescribed, as it is more directly related to the pdfs. As density and pressure, in turn, are linked via \f$p = c_s^2 \rho\f$, this is perfectly legitimate.
\subsection tutorial06_simplePressure SimplePressure
Our first boundary condition to be discussed is the `SimplePressure` that is based on the anti-bounce-back method. Here, the pdfs are calculated by the fixed boundary density and an approximated boundary velocity. \n
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file 05_SolvingPDE.cpp
//! \file 01_SolvingPDE.cpp
//! \author Christoph Rettinger <christoph.rettinger@fau.de>
//
//======================================================================================================================
......
......@@ -7,7 +7,7 @@ namespace walberla {
\brief Implementing an iterative solver, initializing fields, and setting Dirichlet boundary conditions by functions,
domain setup with an axis-aligned bounding box. File 05_SolvingPDE.cpp.
\section problemdescription Problem Description
\section problemdescription01 Problem Description
After learning the basic concepts and data structures of waLBerla, we can now already implement our own solver
for an elliptic partial differential equation, discretized by finite differences. The regarded equation, describing the behavior of the unknown \f$u\f$, is:
......@@ -47,7 +47,7 @@ Coming back to the concepts of waLBerla, this is a perfectly suitable example fo
It requires summing up weighted values of the neighboring cells together with the function value of the right-hand side,
which is then divided by the weight of the center cell.
To avoid data dependencies, i.e., reading neighboring data that has already been updated in a previous step,
two fields (source and destination) are used like in \ref tutorial03.
two fields (source and destination) are used like in \ref tutorial_basics_03.
After the sweep, the data pointers are swapped. A possible, but not optimal, implementation of this procedure is shown below.
The class has private members `srcID_, dstID_, rhsID_, dx_, dy_` that store the BlockDataIDs of the source, destination, and right-hand side field,
and the grid spacings \f$\Delta x\f$ and \f$ \Delta y\f$.
......@@ -295,7 +295,7 @@ Using the GUI, the converged profile looks like:
\image html tutorial_pde01_solution.png
In the next tutorial of the PDE section, \ref pde02, the Jacobi method is used to solve the linear system of equations arising from an implicit time-stepping method
In the next tutorial of the PDE section, \ref tutorial_pde02, the Jacobi method is used to solve the linear system of equations arising from an implicit time-stepping method
for the solution of the famous heat equation.
It is also shown how to include the functionality to stop the simulation based on the norm of the residual,
which is very often used to terminate the iterative solver.
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file 06_HeatEquation.cpp
//! \file 02_HeatEquation.cpp
//! \author Christoph Rettinger <christoph.rettinger@fau.de>
//
//======================================================================================================================
......
......@@ -6,12 +6,12 @@ namespace walberla {
\brief Unsteady heat equation, implicit time stepping, VTK output and ParaView, parallelization with MPI, residual based termination. File 06_HeatEquation.cpp.
In this tutorial, we will make use of the Jacobi method implemented in \ref pde01 to solve the linear system of equations
In this tutorial, we will make use of the Jacobi method implemented in \ref tutorial_pde01 to solve the linear system of equations
that arises by the implicit time discretization of the unsteady heat equation.
The implementation is further improved by using VTK output, parallelization with MPI, and a residual based termination of the Jacobi iteration.
\section problemdescription Problem Description
\section problemdescription02 Problem Description
The <a target="_blank" href="http://en.wikipedia.org/wiki/Heat_equation">heat equation</a> is a classical example for a parabolic partial differential equation, given by:
\f[
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file 06_HeatEquation_Extensions.cpp
//! \file 03_HeatEquation_Extensions.cpp
//! \author Christoph Rettinger <christoph.rettinger@fau.de>
//
//======================================================================================================================
......
......@@ -64,7 +64,7 @@ Not all features of the framework are covered in the tutorials.
To get further information have a look at the modules pages.
Also, the test cases provided in the tests directory are a good starting point for your own developments.
Additionally, there is a folder for full-fledged application codes to be found under \ref apps/benchmarks where also codes of walBerla publications are found.
Additionally, there is a folder for full-fledged application codes to be found under <tt>apps/benchmarks</tt> where also codes of walBerla publications are found.
\section cite Please cite us
......
......@@ -50,7 +50,7 @@ namespace internal {
*
* \subsection SUID SUID MAPPING:
*
* 1 | number of SUIDs (= #SUIDs)
* 1 | number of SUIDs (= \#SUIDs)
*
* \code{.unparsed}
* for each SUID:
......@@ -58,7 +58,7 @@ namespace internal {
* length-of-string | UID identifier string
* \endcode
*
* --> 1 + #SUIDs + number-of-characters-of-all-identifiers-combined BYTES
* --> 1 + \#SUIDs + number-of-characters-of-all-identifiers-combined BYTES
*
* How the mapping works:\n
* SUID #1 is assigned bit #1 ( -> [...]0 0000 0001 )\n
......
//======================================================================================================================
/*!
* \file CMakeDefs.h
* \file CMakeDefs.in.h
* \brief Definitions for blockforest module configured by cmake
*/
//======================================================================================================================
......
......@@ -87,7 +87,7 @@ shared_ptr< StructuredBlockForest > createUniformBlockGridFromConfig( const shar
* assigned to each process. Setting it to false allows multiple blocks to be assigned to each process.
* If the number of blocks is not divisible by the number of processes, the loadbalancer tries to assign
* the blocks to processes as evenly as possible.
* 2) Using the number of global cells, #blocks = #processes, if this does not fit, extend the domain
* 2) Using the number of global cells, \#blocks = \#processes, if this does not fit, extend the domain
\verbatim
{
cells < 10,40,90>; // required
......@@ -751,12 +751,12 @@ createUniformBlockGrid( const std::string& filename,
* in this case the number of cells is chosen bigger than requested
*
*
* \param cells: total number of cells requested
* \param nrOfBlocks: total number of blocks to distribute the cells to
* \param[out] blocks: calculated number of blocks in x/y/z
* \param[out] cellsPerBlock: how many cells to put on each block
it may happen that divisibility of the number of cells requested prevents a distribution
* in this case the number of cells is chosen (slightly) bigger than requested
* \param cells total number of cells requested
* \param nrOfBlocks total number of blocks to distribute the cells to
* \param[out] blocksOut calculated number of blocks in x/y/z
* \param[out] cellsPerBlock how many cells to put on each block
* it may happen that divisibility of the number of cells requested prevents a distribution
* in this case the number of cells is chosen (slightly) bigger than requested
*
* Example: in: cells = (10,15,16)
* in: blocks = 8
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file types.h
//! \file Types.h
//! \ingroup blockforest
//! \author Florian Schornbaum <florian.schornbaum@fau.de>
//
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file utility.cpp
//! \file Utility.cpp
//! \ingroup blockforest
//! \author Florian Schornbaum <florian.schornbaum@fau.de>
//
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file utility.h
//! \file Utility.h
//! \ingroup blockforest
//! \author Florian Schornbaum <florian.schornbaum@fau.de>
//
......
......@@ -13,7 +13,7 @@
// You should have received a copy of the GNU General Public License along
// with waLBerla (see COPYING.txt). If not, see <http://www.gnu.org/licenses/>.
//
//! \file BufferlessScheme.cpp
//! \file UniformDirectScheme.impl.h
//! \ingroup blockforest
//! \author MartinBauer <martin.bauer@fau.de>
//
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment