Skip to content
Snippets Groups Projects
Commit 62b5f66b authored by Anna Wellmann's avatar Anna Wellmann
Browse files

Merge branch 'fixDoxygenModules' into 'develop'

Move doxygen documentation for classes and functions to actual classes and functions

See merge request !391

Fixes #187
parents 6c7efd02 f8e8b1a8
No related branches found
No related tags found
3 merge requests!403minor release 0.1.1,!402minor release 0.1.1,!391Move doxygen documentation for classes and functions to actual classes and functions
Pipeline #35499 passed
Showing
with 69 additions and 77 deletions
...@@ -30,8 +30,6 @@ ...@@ -30,8 +30,6 @@
//! \ingroup gpu_GridGenerator GridGenerator //! \ingroup gpu_GridGenerator GridGenerator
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \brief A class that makes the setup of simulations on multiple gpus easier
//! \details Using this class is optional.
//======================================================================================= //=======================================================================================
...@@ -58,8 +56,9 @@ class FileCollection; ...@@ -58,8 +56,9 @@ class FileCollection;
//! \class MultipleGridBuilderFacade //! \class MultipleGridBuilderFacade
//! \brief Simplifies the creation of the grids for a multi-gpu simulation //! \brief Simplifies the creation of the grids for a multi-gpu simulation
//! \details Using this class is optional.
//! //!
//! \details Steps to set up the grids: //! Steps to set up the grids:
//! //!
//! - 1. initialize class with a MultipleGridBuilder and the dimensions of the entire domain //! - 1. initialize class with a MultipleGridBuilder and the dimensions of the entire domain
//! //!
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#include "IndexRearrangementForStreams.h" #include "IndexRearrangementForStreams.h"
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#ifndef IndexRearrangementForStreams_H #ifndef IndexRearrangementForStreams_H
#define IndexRearrangementForStreams_H #define IndexRearrangementForStreams_H
...@@ -47,10 +46,14 @@ namespace vf::parallel ...@@ -47,10 +46,14 @@ namespace vf::parallel
class Communicator; class Communicator;
} }
//! \brief class that is used to rearrange the arrays of node indices for communication between gpus. The rearrangement is
//! needed for communication hiding with cuda streams
//! \details This class changes the order of the node indices that are needed for communication between gpus. The indices are
//! reordered so that they can be split into two groups: nodes that are part if the interpolation between grid levels, and
//! nodes that are not. These groups are needed for communication hiding. For details see [master thesis of Anna Wellmann]
class IndexRearrangementForStreams class IndexRearrangementForStreams
{ {
public: public:
//! \brief Construct IndexRearrangementForStreams object
IndexRearrangementForStreams(std::shared_ptr<Parameter> para, std::shared_ptr<GridBuilder> builder, vf::parallel::Communicator& communicator); IndexRearrangementForStreams(std::shared_ptr<Parameter> para, std::shared_ptr<GridBuilder> builder, vf::parallel::Communicator& communicator);
virtual ~IndexRearrangementForStreams() = default; virtual ~IndexRearrangementForStreams() = default;
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core_tests core //! \ingroup gpu_core_tests core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#include <gmock/gmock.h> #include <gmock/gmock.h>
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#include "InterpolationCellGrouper.h" #include "InterpolationCellGrouper.h"
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#ifndef InterpolationCellGrouper_H #ifndef InterpolationCellGrouper_H
...@@ -46,9 +45,11 @@ class GridBuilder; ...@@ -46,9 +45,11 @@ class GridBuilder;
using LBMSimulationParameters = std::vector<std::shared_ptr<LBMSimulationParameter>>; using LBMSimulationParameters = std::vector<std::shared_ptr<LBMSimulationParameter>>;
//! \brief Split the interpolation cells into two groups: cells which are at the border between gpus and therefore involved
//! in the communication between gpus, and cells which are not directly related to the communication between gpus.
//! \details See [master thesis of Anna Wellmann]
class InterpolationCellGrouper { class InterpolationCellGrouper {
public: public:
//! \brief Construct InterpolationCellGrouper object
InterpolationCellGrouper(const LBMSimulationParameters &parHs, const LBMSimulationParameters &parDs, InterpolationCellGrouper(const LBMSimulationParameters &parHs, const LBMSimulationParameters &parDs,
SPtr<GridBuilder> builder); SPtr<GridBuilder> builder);
......
...@@ -30,7 +30,6 @@ ...@@ -30,7 +30,6 @@
//! \ingroup gpu_core_tests core //! \ingroup gpu_core_tests core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \details See [master thesis of Anna Wellmann]
//======================================================================================= //=======================================================================================
#include <gmock/gmock.h> #include <gmock/gmock.h>
#include "Utilities/testUtilitiesGPU.h" #include "Utilities/testUtilitiesGPU.h"
......
...@@ -31,12 +31,6 @@ ...@@ -31,12 +31,6 @@
//! \{ //! \{
//! \author Henrik Asmuth //! \author Henrik Asmuth
//! \date 13/012/2022 //! \date 13/012/2022
//! \brief Basic debugging class to print out f's in a certain area of the domain
//!
//! Basic debugging class. Needs to be directly added in UpdateGrid (could potentially also be added as a proper Probe in the
//! future) How to use: Define a part of the domain via min/max x, y, and z. The DistributionDebugInspector will print out
//! all f's in that area.
//!
//======================================================================================= //=======================================================================================
#ifndef DISTRIBUTION_INSPECTOR_H #ifndef DISTRIBUTION_INSPECTOR_H
...@@ -46,6 +40,11 @@ ...@@ -46,6 +40,11 @@
class Parameter; class Parameter;
//! \brief Basic debugging class to print out f's in a certain area of the domain
//!
//! Basic debugging class. Needs to be directly added in UpdateGrid (could potentially also be added as a proper Probe in the
//! future) How to use: Define a part of the domain via min/max x, y, and z. The DistributionDebugInspector will print out
//! all f's in that area.
class DistributionDebugInspector class DistributionDebugInspector
{ {
public: public:
......
...@@ -29,10 +29,6 @@ ...@@ -29,10 +29,6 @@
//! \addtogroup gpu_Parameter Parameter //! \addtogroup gpu_Parameter Parameter
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann
//! \brief Functions for finding edge nodes in the multi-gpu implementation
//! \details Edge nodes are nodes, which are part of the communication in multiple directions
//! \ref master thesis of Anna Wellmann (p. 54-57)
//======================================================================================= //=======================================================================================
#include <vector> #include <vector>
#include <optional> #include <optional>
......
...@@ -30,9 +30,6 @@ ...@@ -30,9 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Anna Wellmann //! \author Anna Wellmann
//! \brief Functions for finding edge nodes in the multi-gpu implementation
//! \details Edge nodes are nodes, which are part of the communication in multiple directions
//! \ref master thesis of Anna Wellmann (p. 54-57)
//======================================================================================= //=======================================================================================
#ifndef GPU_EDGENODES_H #ifndef GPU_EDGENODES_H
#define GPU_EDGENODES_H #define GPU_EDGENODES_H
...@@ -43,7 +40,9 @@ class Parameter; ...@@ -43,7 +40,9 @@ class Parameter;
namespace vf::gpu namespace vf::gpu
{ {
//! \brief Find nodes which are part of communication in multiple coordinate directions //! \brief Function for finding edge nodes in the multi-gpu implementation
//! \details Edge nodes are nodes, which are part of the communication in multiple directions
//! \ref master thesis of Anna Wellmann (p. 54-57)
void findEdgeNodesCommMultiGPU(Parameter& parameter); void findEdgeNodesCommMultiGPU(Parameter& parameter);
} // namespace vf::gpu } // namespace vf::gpu
......
...@@ -29,10 +29,6 @@ ...@@ -29,10 +29,6 @@
//! \addtogroup gpu_Parameter_tests Parameter //! \addtogroup gpu_Parameter_tests Parameter
//! \ingroup gpu_core_tests core //! \ingroup gpu_core_tests core
//! \{ //! \{
//! \author Anna Wellmann
//! \brief Functions for finding edge nodes in the multi-gpu implementation
//! \details Edge nodes are nodes, which are part of the communication in multiple directions
//! \ref master thesis of Anna Wellmann (p. 54-57)
//======================================================================================= //=======================================================================================
#include <gmock/gmock.h> #include <gmock/gmock.h>
......
...@@ -30,8 +30,6 @@ ...@@ -30,8 +30,6 @@
//! \ingroup gpu_core core //! \ingroup gpu_core core
//! \{ //! \{
//! \author Martin Schoenherr //! \author Martin Schoenherr
//! \brief note, that the drag/lift calculations are build for being used with
//! \brief geometry boundary nodes and the related area has to be defined here
//======================================================================================= //=======================================================================================
#include "DragLift.h" #include "DragLift.h"
...@@ -49,6 +47,8 @@ ...@@ -49,6 +47,8 @@
using namespace std; using namespace std;
//! \brief Calculate drag and lift for a geometry
//! \details note, that the drag/lift calculations are build for being used with geometry boundary nodes and the related area has to be defined here
void calcDragLift(Parameter* para, CudaMemoryManager* cudaMemoryManager, int lev) void calcDragLift(Parameter* para, CudaMemoryManager* cudaMemoryManager, int lev)
{ {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
......
...@@ -31,10 +31,6 @@ ...@@ -31,10 +31,6 @@
//! \{ //! \{
//! \author Henry Korb, Henrik Asmuth //! \author Henry Korb, Henrik Asmuth
//! \date 05/12/2022 //! \date 05/12/2022
//! \brief Probe writing planes of data to be used as inflow data in successor simulation using PrecursorBC
//!
//! The probe writes out yz-planes at a specific x position ( \param xPos ) of either velocity or distributions
//! that can be read by PrecursorBC as inflow data.
//======================================================================================= //=======================================================================================
...@@ -87,6 +83,11 @@ struct PrecursorStruct ...@@ -87,6 +83,11 @@ struct PrecursorStruct
cudaStream_t stream; cudaStream_t stream;
}; };
//! \brief Probe writing planes of data to be used as inflow data in successor simulation using PrecursorBC
//!
//! The probe writes out yz-planes at a specific x position ( \param xPos ) of either velocity or distributions
//! that can be read by PrecursorBC as inflow data.
//!
class PrecursorWriter : public PreCollisionInteractor class PrecursorWriter : public PreCollisionInteractor
{ {
public: public:
......
...@@ -31,11 +31,6 @@ ...@@ -31,11 +31,6 @@
//! \{ //! \{
//! \author Henrik Asmuth //! \author Henrik Asmuth
//! \date 13/05/2022 //! \date 13/05/2022
//! \brief Probe computing statistics across planes spanning the entire domain
//!
//! Computes spatial statistics across x, y or z-normal planes defined by planeNormal.
//! The planes include all points of the domain at each respective position along that normal direction.
//! The spatial statistics can additionally be averaged in time.
//! //!
//======================================================================================= //=======================================================================================
...@@ -50,6 +45,11 @@ __global__ void moveIndicesInPosNormalDir( uint* pointIndices, uint nPoints, uin ...@@ -50,6 +45,11 @@ __global__ void moveIndicesInPosNormalDir( uint* pointIndices, uint nPoints, uin
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
//! \brief Probe computing statistics across planes spanning the entire domain
//!
//! Computes spatial statistics across x, y or z-normal planes defined by planeNormal.
//! The planes include all points of the domain at each respective position along that normal direction.
//! The spatial statistics can additionally be averaged in time.
class PlanarAverageProbe : public Probe class PlanarAverageProbe : public Probe
{ {
public: public:
......
...@@ -31,11 +31,6 @@ ...@@ -31,11 +31,6 @@
//! \{ //! \{
//! \author Henry Korb, Henrik Asmuth //! \author Henry Korb, Henrik Asmuth
//! \date 13/05/2022 //! \date 13/05/2022
//! \brief Probe computing point-wise statistics for a set of points across a plane
//!
//! The set of points can be defined by providing a list or on an x-normal plane.
//! All statistics are temporal.
//!
//======================================================================================= //=======================================================================================
#ifndef PlaneProbe_H #ifndef PlaneProbe_H
...@@ -45,6 +40,11 @@ ...@@ -45,6 +40,11 @@
#include "Probe.h" #include "Probe.h"
//! \brief Probe computing point-wise statistics for a set of points across a plane
//!
//! The set of points can be defined by providing a list or on an x-normal plane.
//! All statistics are temporal.
//!
class PlaneProbe : public Probe class PlaneProbe : public Probe
{ {
public: public:
......
...@@ -31,11 +31,6 @@ ...@@ -31,11 +31,6 @@
//! \{ //! \{
//! \author Henry Korb, Henrik Asmuth //! \author Henry Korb, Henrik Asmuth
//! \date 13/05/2022 //! \date 13/05/2022
//! \brief Probe computing statistics for a set of points in space
//!
//! The set of points can be defined by providing a list or on an x-normal plane (the latter being somewhat redundant with PlaneProbe)
//! All statistics are temporal.
//!
//======================================================================================= //=======================================================================================
#ifndef PointProbe_H #ifndef PointProbe_H
...@@ -43,6 +38,11 @@ ...@@ -43,6 +38,11 @@
#include "Probe.h" #include "Probe.h"
//! \brief Probe computing statistics for a set of points in space
//!
//! The set of points can be defined by providing a list or on an x-normal plane (the latter being somewhat redundant with PlaneProbe)
//! All statistics are temporal.
//!
class PointProbe: public Probe class PointProbe: public Probe
{ {
public: public:
......
...@@ -31,15 +31,6 @@ ...@@ -31,15 +31,6 @@
//! \{ //! \{
//! \author Henry Korb, Henrik Asmuth //! \author Henry Korb, Henrik Asmuth
//! \date 13/05/2022 //! \date 13/05/2022
//! \brief Base class for probes called in UpdateGrid27
//!
//! Any probe should be initiated in the app and added via para->addProbe( someProbe )
//! Note, that all probes generally require that macroscopic variables have been updated in the
//! time step they are called in. Most collision kernels (atm, all except K17CompressibleNavierStokes)
//! don't do this and would require an explicit call of calcMacroscopicQuantities. It does seem quite
//! inexpensive though to simply save vx, vy, etc., directly in the collider.
//!
//! \todo might have to adapt conversionFactors when using grid refinement
//======================================================================================= //=======================================================================================
#ifndef Probe_H #ifndef Probe_H
...@@ -137,6 +128,15 @@ __global__ void interpAndCalcQuantitiesKernel( uint* pointIndices, ...@@ -137,6 +128,15 @@ __global__ void interpAndCalcQuantitiesKernel( uint* pointIndices,
uint calcOldTimestep(uint currentTimestep, uint lastTimestepInOldSeries); uint calcOldTimestep(uint currentTimestep, uint lastTimestepInOldSeries);
//! \brief Base class for probes called in UpdateGrid27
//!
//! Any probe should be initiated in the app and added via para->addProbe( someProbe )
//! Note, that all probes generally require that macroscopic variables have been updated in the
//! time step they are called in. Most collision kernels (atm, all except K17CompressibleNavierStokes)
//! don't do this and would require an explicit call of calcMacroscopicQuantities. It does seem quite
//! inexpensive though to simply save vx, vy, etc., directly in the collider.
//!
//! \todo might have to adapt conversionFactors when using grid refinement
class Probe : public PreCollisionInteractor class Probe : public PreCollisionInteractor
{ {
public: public:
......
...@@ -31,11 +31,6 @@ ...@@ -31,11 +31,6 @@
//! \{ //! \{
//! \author Henrik Asmuth //! \author Henrik Asmuth
//! \date 13/05/2022 //! \date 13/05/2022
//! \brief Probe computing statistics of all relevant wall model quantities used in the StressBC kernels
//!
//! Computes spatial statistics for all grid points of the StressBC
//! The spatial statistics can additionally be averaged in time.
//!
//======================================================================================= //=======================================================================================
#ifndef WallModelProbe_H #ifndef WallModelProbe_H
...@@ -47,6 +42,11 @@ ...@@ -47,6 +42,11 @@
/////////////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////////////
//! \brief Probe computing statistics of all relevant wall model quantities used in the StressBC kernels
//!
//! Computes spatial statistics for all grid points of the StressBC
//! The spatial statistics can additionally be averaged in time.
//!
class WallModelProbe : public Probe class WallModelProbe : public Probe
{ {
public: public:
......
...@@ -29,19 +29,8 @@ ...@@ -29,19 +29,8 @@
//! \addtogroup collision //! \addtogroup collision
//! \ingroup lbm //! \ingroup lbm
//! \{ //! \{
//! \author Anna Wellmann, Martin Schönherr, Henry Korb, Henrik Asmuth //! \author Martin Schönherr, Anna Wellmann, Henry Korb, Henrik Asmuth
//! \date 05/12/2022 //! \date 05/12/2022
//! \brief Kernel for CumulantK17 including different turbulence models and options for local body forces and writing
//! macroscopic variables
//!
//! CumulantK17 kernel using chimera transformations and quartic limiters as present in Geier et al. (2017). Additional
//! options are three different eddy-viscosity turbulence models (Smagorinsky, AMD, QR) that can be set via the template
//! parameter turbulenceModel (with default TurbulenceModel::None). The kernel is executed separately for each subset of
//! fluid node indices with a different tag CollisionTemplate. For each subset, only the locally required options are
//! switched on ( \param writeMacroscopicVariables and/or \param applyBodyForce) in order to minimize memory accesses. The
//! default refers to the plain cumlant kernel (CollisionTemplate::Default). Nodes are added to subsets (taggedFluidNodes) in
//! Simulation::init using a corresponding tag with different values of CollisionTemplate. These subsets are provided by the
//! utilized PostCollisionInteractiors depending on they specific requirements (e.g. writeMacroscopicVariables for probes).
//======================================================================================= //=======================================================================================
#include <basics/constants/NumericConstants.h> #include <basics/constants/NumericConstants.h>
...@@ -77,7 +66,20 @@ namespace vf::lbm ...@@ -77,7 +66,20 @@ namespace vf::lbm
{ {
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
//! Cumulant K17 Kernel is based on \ref //! \brief Kernel for CumulantK17 including different turbulence models and options for local body forces and writing
//! macroscopic variables
//!
//! \details
//! CumulantK17 kernel using chimera transformations and quartic limiters as present in Geier et al. (2017). Additional
//! options are three different eddy-viscosity turbulence models (Smagorinsky, AMD, QR) that can be set via the template
//! parameter turbulenceModel (with default TurbulenceModel::None). The kernel is executed separately for each subset of
//! fluid node indices with a different tag CollisionTemplate. For each subset, only the locally required options are
//! switched on ( \param writeMacroscopicVariables and/or \param applyBodyForce) in order to minimize memory accesses. The
//! default refers to the plain cumlant kernel (CollisionTemplate::Default). Nodes are added to subsets (taggedFluidNodes) in
//! Simulation::init using a corresponding tag with different values of CollisionTemplate. These subsets are provided by the
//! utilized PostCollisionInteractiors depending on they specific requirements (e.g. writeMacroscopicVariables for probes).
//!
//! The CumulantK17 Kernel is based on \ref
//! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040 //! <a href="https://doi.org/10.1016/j.jcp.2017.05.040"><b>[ M. Geier et al. (2017), DOI:10.1016/j.jcp.2017.05.040
//! ]</b></a> and \ref <a href="https://doi.org/10.1016/j.jcp.2017.07.004"><b>[ M. Geier et al. (2017), //! ]</b></a> and \ref <a href="https://doi.org/10.1016/j.jcp.2017.07.004"><b>[ M. Geier et al. (2017),
//! DOI:10.1016/j.jcp.2017.07.004 ]</b></a> //! DOI:10.1016/j.jcp.2017.07.004 ]</b></a>
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment