Commit 12b07f0b authored by Timo Koch's avatar Timo Koch

Merge branch 'cleanup/doxygen-for-3.0-tests' into 'master'

[doxygen] Cleanup/doxygen for 3.0 tests

See merge request !1404
parents 7941a31f 58da3381
......@@ -1772,3 +1772,68 @@ url = {http://www.sciencedirect.com/science/article/pii/0094454874901507},
doi = {10.2514/6.1992-439},
url = {http://dx.doi.org/10.2514/6.1992-439}
}
@book{Donea2003,
title={Finite element methods for flow problems},
author={Donea, Jean and Huerta, Antonio},
year={2003},
publisher={John Wiley \& Sons}
}
@inproceedings{Angeli2017,
title={FVCA8 Benchmark for the Stokes and Navier--Stokes Equations with the TrioCFD Code—Benchmark Session},
author={Angeli, P-E and Puscas, M-A and Fauchet, G and Cartalade, A},
booktitle={International Conference on Finite Volumes for Complex Applications},
pages={181--202},
year={2017},
organization={Springer}
}
@InProceedings{Kovasznay1948,
author = {Kovasznay, L. I. G.},
title = {Laminar flow behind a two-dimensional grid},
booktitle = {Mathematical Proceedings of the Cambridge Philosophical Society},
year = {1948},
volume = {44},
pages = {58--62},
organization = {Cambridge Univ Press},
}
@PHDTHESIS{Class2001,
author = {H. Class},
title = {{Theorie und numerische Modellierung nichtisothermer Mehrphasenprozesse in NAPL-kontaminierten por"osen Medien}},
school = {Universit\"at Stuttgart},
year = {2001}
}
@Article{Shi2011,
author={Shi, J. X. and Wang, J. H.},
title={A Numerical Investigation of Transpiration Cooling with Liquid Coolant Phase Change},
journal={Transport in Porous Media},
year={2011},
volume={87},
number={3},
pages={703--716},
doi={10.1007/s11242-010-9710-9},
url={https://doi.org/10.1007/s11242-010-9710-9}
}
@article{nagel2014,
title={The influence of gas--solid reaction kinetics in models of thermochemical heat storage under monotonic and cyclic loading},
author={Nagel, T and Shao, H and Ro{\ss}kopf, C and Linder, M and W{\"o}rner, A and Kolditz, O},
journal={Applied Energy},
volume={136},
pages={289--302},
year={2014},
publisher={Elsevier}
}
@article{shao2013,
title={{Non-equilibrium thermo-chemical heat storage in porous media: Part 2--A 1D computational model for a calcium hydroxide reaction system}},
author={Shao, H and Nagel, T and Ro{\ss}kopf, C and Linder, M and W{\"o}rner, A and Kolditz, O},
journal={Energy},
volume={60},
pages={271--282},
year={2013},
publisher={Elsevier}
}
......@@ -55,12 +55,10 @@ public:
int wettingPhase() const
{ return phase0Idx; }
/*!
* \name access functions
* \todo doc me!
*/
//@{
/*****************************************************
* Generic access to fluid properties (No assumptions
* on thermodynamic equilibrium required)
*****************************************************/
/*!
* \brief Returns the saturation \f$S_\alpha\f$ of a fluid phase \f$\alpha\f$ in \f$\mathrm{[-]}\f$.
*
......@@ -197,10 +195,11 @@ public:
return phaseMassFraction(phaseIdx);
}
/*!
* \name Functions to set Data
*/
//@{
/*****************************************************
* Setter methods. Note that these are not part of the
* generic FluidState interface but specific for each
* implementation...
*****************************************************/
/*!
* \brief Sets the viscosity of a phase \f$\mathrm{[Pa*s]}\f$.
* \param phaseIdx the index of the phase
......
......@@ -18,9 +18,11 @@
*****************************************************************************/
/*!
* \file
*
* \brief Test for the instationary staggered grid Navier-Stokes model with analytical solution (Angeli et al., 2017)
* \ingroup NavierStokesTests
* \brief Test for the instationary staggered grid Navier-Stokes model
* with analytical solution (Angeli et al. 2017, \cite Angeli2017).
*/
#include <config.h>
#include <ctime>
......@@ -106,10 +108,10 @@ int main(int argc, char** argv) try
auto gridVariables = std::make_shared<GridVariables>(problem, fvGridGeometry);
gridVariables->init(x);
// intialize the vtk output module
// initialize the vtk output module
StaggeredVtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
using IOFields = GetPropType<TypeTag, Properties::IOFields>;
IOFields::initOutputModule(vtkWriter); //!< Add model specific output fields
IOFields::initOutputModule(vtkWriter); // Add model specific output fields
vtkWriter.addField(problem->getAnalyticalPressureSolution(), "pressureExact");
vtkWriter.addField(problem->getAnalyticalVelocitySolution(), "velocityExact");
vtkWriter.addFaceField(problem->getAnalyticalVelocitySolutionOnFace(), "faceVelocityExact");
......
......@@ -19,8 +19,10 @@
/*!
* \file
* \ingroup NavierStokesTests
* \brief Test for the instationary staggered grid Navier-Stokes model with analytical solution (Angeli et al., 2017)
* \brief Test for the instationary staggered grid Navier-Stokes model
* with analytical solution (Angeli et al. 2017, \cite Angeli2017).
*/
#ifndef DUMUX_ANGELI_TEST_PROBLEM_HH
#define DUMUX_ANGELI_TEST_PROBLEM_HH
......@@ -34,13 +36,11 @@
#include <dumux/freeflow/navierstokes/model.hh>
#include "../l2error.hh"
namespace Dumux
{
namespace Dumux {
template <class TypeTag>
class AngeliTestProblem;
namespace Properties
{
namespace Properties {
// Create new type tags
namespace TTag {
struct AngeliTest { using InheritsFrom = std::tuple<NavierStokes, StaggeredFreeFlowModel>; };
......@@ -71,13 +71,16 @@ template<class TypeTag>
struct EnableGridFluxVariablesCache<TypeTag, TTag::AngeliTest> { static constexpr bool value = true; };
template<class TypeTag>
struct EnableGridVolumeVariablesCache<TypeTag, TTag::AngeliTest> { static constexpr bool value = true; };
}
} // end namespace Properties
/*!
* \ingroup NavierStokesTests
* \brief Test problem for the staggered grid (Angeli 1947)
* \todo doc me!
* \brief Test problem for the staggered grid (Angeli et al. 2017, \cite Angeli2017).
*
* The unsteady, 2D, incompressible Navier-Stokes equations for a zero source and a Newtonian
* flow is solved and compared to an analytical solution (sums/products of trigonometric functions).
* The velocities and pressures decay exponentially. The Dirichlet boundary conditions are
* time-dependent and consistent with the analytical solution.
*/
template <class TypeTag>
class AngeliTestProblem : public NavierStokesProblem<TypeTag>
......@@ -136,7 +139,7 @@ public:
}
/*!
* \brief Return the temperature within the domain in [K].
* \brief Returns the temperature within the domain in [K].
*
* This problem assumes a temperature of 10 degrees Celsius.
*/
......@@ -145,7 +148,7 @@ public:
/*!
* \brief Return the sources within the domain.
* \brief Returns the sources within the domain.
*
* \param globalPos The global position
*/
......@@ -199,7 +202,7 @@ public:
}
/*!
* \brief Return dirichlet boundary values at a given position
* \brief Returns Dirichlet boundary values at a given position.
*
* \param globalPos The global position
*/
......@@ -210,7 +213,7 @@ public:
}
/*!
* \brief Return the analytical solution of the problem at a given position
* \brief Returns the analytical solution of the problem at a given position.
*
* \param globalPos The global position
* \param time The current simulation time
......@@ -239,7 +242,7 @@ public:
// \{
/*!
* \brief Evaluate the initial value for a control volume.
* \brief Evaluates the initial value for a control volume.
*
* \param globalPos The global position
*/
......@@ -249,7 +252,7 @@ public:
}
/*!
* \brief Returns the analytical solution for the pressure
* \brief Returns the analytical solution for the pressure.
*/
auto& getAnalyticalPressureSolution() const
{
......@@ -257,7 +260,7 @@ public:
}
/*!
* \brief Returns the analytical solution for the velocity
* \brief Returns the analytical solution for the velocity.
*/
auto& getAnalyticalVelocitySolution() const
{
......@@ -265,7 +268,7 @@ public:
}
/*!
* \brief Returns the analytical solution for the velocity at the faces
* \brief Returns the analytical solution for the velocity at the faces.
*/
auto& getAnalyticalVelocitySolutionOnFace() const
{
......@@ -284,7 +287,9 @@ public:
}
/*!
* \brief Adds additional VTK output data to the VTKWriter. Function is called by the output module on every write.
* \brief Adds additional VTK output data to the VTKWriter.
*
* Function is called by the output module on every write.
*/
void createAnalyticalSolution()
{
......@@ -331,6 +336,6 @@ private:
std::vector<VelocityVector> analyticalVelocity_;
std::vector<VelocityVector> analyticalVelocityOnFace_;
};
} //end namespace
} // end namespace Dumux
#endif
......@@ -18,9 +18,10 @@
*****************************************************************************/
/*!
* \file
*
* \brief Test for a 1-D staggered grid Navier-Stokes model
* \ingroup NavierStokesTests
* \brief Test for a 1-D staggered grid Navier-Stokes model.
*/
#include <config.h>
#include <ctime>
......@@ -96,7 +97,7 @@ int main(int argc, char** argv) try
// intialize the vtk output module
using IOFields = GetPropType<TypeTag, Properties::IOFields>;
StaggeredVtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
IOFields::initOutputModule(vtkWriter); //!< Add model specific output fields
IOFields::initOutputModule(vtkWriter); // Add model specific output fields
vtkWriter.addField(problem->getAnalyticalPressureSolution(), "pressureExact");
vtkWriter.addField(problem->getAnalyticalVelocitySolution(), "velocityExact");
vtkWriter.addFaceField(problem->getAnalyticalVelocitySolutionOnFace(), "faceVelocityExact");
......
......@@ -19,7 +19,7 @@
/*!
* \file
* \ingroup NavierStokesTests
* \brief Test for the 1-D Navier-Stokes model with an analytical solution
* \brief Test for the 1-D Navier-Stokes model with an analytical solution.
*
* \copydoc Dumux::NavierStokesAnalyticProblem
*/
......@@ -38,13 +38,11 @@
#include "../../l2error.hh"
namespace Dumux
{
namespace Dumux {
template <class TypeTag>
class NavierStokesAnalyticProblem;
namespace Properties
{
namespace Properties {
// Create new type tags
namespace TTag {
struct NavierStokesAnalytic { using InheritsFrom = std::tuple<NavierStokes, StaggeredFreeFlowModel>; };
......@@ -76,15 +74,15 @@ struct EnableGridVolumeVariablesCache<TypeTag, TTag::NavierStokesAnalytic> { sta
template<class TypeTag>
struct NormalizePressure<TypeTag, TTag::NavierStokesAnalytic> { static constexpr bool value = false; };
}
} // end namespace Properties
/*!
* \ingroup NavierStokesTests
* \brief Test for the 1-D Navier-Stokes model with an analytical solution
* \brief Test for the 1-D Navier-Stokes model with an analytical solution.
*
* The 1-D analytic solution is given by
* \f[ p = 2 - 2 \cdot x \f]
* \f[ v_\text{x} = 2 \cdot x^3 \f]
* \f[ v_\text{x} = 2 \cdot x^3 \f].
*/
template <class TypeTag>
class NavierStokesAnalyticProblem : public NavierStokesProblem<TypeTag>
......@@ -144,7 +142,7 @@ public:
}
/*!
* \brief Return the temperature within the domain in [K].
* \brief Returns the temperature within the domain in [K].
*
* This problem assumes a temperature of 10 degrees Celsius.
*/
......@@ -152,7 +150,7 @@ public:
{ return 298.0; }
/*!
* \brief Return the sources within the domain.
* \brief Returns the sources within the domain.
*
* \param globalPos The global position
*/
......@@ -239,7 +237,7 @@ public:
}
/*!
* \brief Return dirichlet boundary values at a given position
* \brief Returns Dirichlet boundary values at a given position
*
* \param globalPos The global position
*/
......@@ -250,7 +248,7 @@ public:
}
/*!
* \brief Return the analytical solution of the problem at a given position
* \brief Returns the analytical solution of the problem at a given position
*
* \param globalPos The global position
*/
......@@ -321,7 +319,7 @@ public:
// \{
/*!
* \brief Evaluate the initial value for a control volume.
* \brief Evaluates the initial value for a control volume.
*
* \param globalPos The global position
*/
......@@ -339,7 +337,7 @@ public:
}
/*!
* \brief Returns the analytical solution for the velocity
* \brief Returns the analytical solution for the velocity.
*/
auto& getAnalyticalVelocitySolution() const
{
......@@ -347,7 +345,7 @@ public:
}
/*!
* \brief Returns the analytical solution for the velocity at the faces
* \brief Returns the analytical solution for the velocity at the faces.
*/
auto& getAnalyticalVelocitySolutionOnFace() const
{
......@@ -357,7 +355,9 @@ public:
private:
/*!
* \brief Adds additional VTK output data to the VTKWriter. Function is called by the output module on every write.
* \brief Adds additional VTK output data to the VTKWriter.
*
* Function is called by the output module on every write.
*/
void createAnalyticalSolution_()
{
......@@ -401,6 +401,6 @@ private:
std::vector<GlobalPosition> analyticalVelocity_;
std::vector<GlobalPosition> analyticalVelocityOnFace_;
};
} //end namespace
} // end namespace Dumux
#endif
......@@ -18,9 +18,10 @@
*****************************************************************************/
/*!
* \file
*
* \brief Channel flow test for the staggered grid (Navier-)Stokes model
* \ingroup NavierStokesTests
* \brief Channel flow test for the staggered grid (Navier-)Stokes model.
*/
#include <config.h>
#include <ctime>
......@@ -113,7 +114,7 @@ int main(int argc, char** argv) try
// initialize the vtk output module
using IOFields = GetPropType<TypeTag, Properties::IOFields>;
StaggeredVtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
IOFields::initOutputModule(vtkWriter); //!< Add model specific output fields
IOFields::initOutputModule(vtkWriter); // Add model specific output fields
vtkWriter.write(restartTime);
// the assembler with time loop for instationary problem
......
......@@ -19,8 +19,9 @@
/*!
* \file
* \ingroup NavierStokesTests
* \brief Channel flow test for the staggered grid (Navier-)Stokes model
* \brief Channel flow test for the staggered grid (Navier-)Stokes model.
*/
#ifndef DUMUX_CHANNEL_TEST_PROBLEM_HH
#define DUMUX_CHANNEL_TEST_PROBLEM_HH
......@@ -34,13 +35,11 @@
#include <dumux/discretization/staggered/freeflow/properties.hh>
#include <dumux/freeflow/navierstokes/model.hh>
namespace Dumux
{
namespace Dumux {
template <class TypeTag>
class ChannelTestProblem;
namespace Properties
{
namespace Properties {
// Create new type tags
namespace TTag {
#if !NONISOTHERMAL
......@@ -77,12 +76,18 @@ template<class TypeTag>
struct EnableGridFluxVariablesCache<TypeTag, TTag::ChannelTest> { static constexpr bool value = true; };
template<class TypeTag>
struct EnableGridVolumeVariablesCache<TypeTag, TTag::ChannelTest> { static constexpr bool value = true; };
}
} // end namespace Properties
/*!
* \ingroup NavierStokesTests
* \brief Test problem for the one-phase (Navier-) Stokes problem in a channel.
* \todo doc me!
*
* Flow from left to right in a two-dimensional channel is considered. At the inlet (left),
* fixed values for velocity are set, while at the outlet (right), a fixed pressure
* boundary condition is used. The channel is confined by solid walls at the top and bottom
* of the domain which corresponds to no-slip/no-flow conditions.
* For the non-isothermal test, water of increased temperature is injected at the inlet
* while the walls are fully isolating.
*/
template <class TypeTag>
class ChannelTestProblem : public NavierStokesProblem<TypeTag>
......@@ -122,7 +127,7 @@ public:
}
/*!
* \brief Return the temperature within the domain in [K].
* \brief Returns the temperature within the domain in [K].
*
* This problem assumes a temperature of 10 degrees Celsius.
*/
......@@ -130,7 +135,7 @@ public:
{ return 273.15 + 10; } // 10C
/*!
* \brief Return the sources within the domain.
* \brief Returns the sources within the domain.
*
* \param globalPos The global position
*/
......@@ -182,8 +187,7 @@ public:
}
/*!
* \brief Evaluate the boundary conditions for a dirichlet
* control volume.
* \brief Evaluates the boundary conditions for a Dirichlet control volume.
*
* \param globalPos The center of the finite volume which ought to be set.
*/
......@@ -212,7 +216,7 @@ public:
// \{
/*!
* \brief Evaluate the initial value for a control volume.
* \brief Evaluates the initial value for a control volume.
*
* \param globalPos The global position
*/
......@@ -259,6 +263,6 @@ private:
Scalar inletVelocity_;
TimeLoopPtr timeLoop_;
};
} //end namespace
} // end namespace Dumux
#endif
......@@ -16,11 +16,12 @@
* You should have received a copy of the GNU General Public License *
* along with this program. If not, see <http://www.gnu.org/licenses/>. *
*****************************************************************************/
/*!
* \file
*
* \brief 3D Channel flow test for the staggered grid (Navier-)Stokes model
*/
/*!
* \file
* \ingroup NavierStokesTests
* \brief 3D Channel flow test for the staggered grid (Navier-)Stokes model
*/
#include <config.h>
#include <ctime>
......@@ -97,7 +98,7 @@ int main(int argc, char** argv) try
// intialize the vtk output module
using IOFields = GetPropType<TypeTag, Properties::IOFields>;
StaggeredVtkOutputModule<GridVariables, SolutionVector> vtkWriter(*gridVariables, x, problem->name());
IOFields::initOutputModule(vtkWriter); //!< Add model specific output fields
IOFields::initOutputModule(vtkWriter); // Add model specific output fields
vtkWriter.write(0.0);
// the assembler with time loop for instationary problem
......
......@@ -18,13 +18,13 @@
*****************************************************************************/
/*!
* \file
*
* \ingroup NavierStokesTests
* \brief Channel flow test for the staggered grid (Navier-)Stokes model.
*
* The channel is either modeled in 3D or in 2D, using an additional wall friction term
* to mimic the 3D behavior of the flow.
*
*/
#ifndef DUMUX_3D_CHANNEL_PROBLEM_HH
#define DUMUX_3D_CHANNEL_PROBLEM_HH
......@@ -42,15 +42,12 @@
#define DIM_3D 0
#endif
namespace Dumux
{
namespace Dumux {
template <class TypeTag>
class ThreeDChannelTestProblem;
namespace Properties
{
namespace Properties {
// Create new type tags
namespace TTag {
struct ThreeDChannelTest { using InheritsFrom = std::tuple<NavierStokes, StaggeredFreeFlowModel>; };
......@@ -83,11 +80,18 @@ template<class TypeTag>
struct EnableGridFluxVariablesCache<TypeTag, TTag::ThreeDChannelTest> { static constexpr bool value = true; };
template<class TypeTag>
struct EnableGridVolumeVariablesCache<TypeTag, TTag::ThreeDChannelTest> { static constexpr bool value = true; };
}
} // end namespace Properties
/*!
* \brief Test problem for the one-phase model:
\todo doc me!
* \brief Test problem for the one-phase (Navier-) Stokes model in a 3D or pseudo 3D channel.
*
* Flow from left to right in a three-dimensional channel is considered. At the inlet (left)
* and outlet (right) fixed values for pressure are set.
* The channel is confined by solid walls at all other sides of the domain which corresponds
* to no-slip/no-flow conditions.
* The value of an analytical solution for the given flow configuration is furthermore provided.
* For sake of efficiency, the 3D problem can be reduced to a two-dimensional one by including
* an additional wall friction term to the momentum balance (Flekkoy et al., 1995 \cite flekkoy1995a).
*/
template <class TypeTag>
class ThreeDChannelTestProblem : public NavierStokesProblem<TypeTag>
......@@ -142,7 +146,7 @@ public:
// \{
/*!
* \brief Return the temperature within the domain in [K].
* \brief Returns the temperature within the domain in [K].
*
* This problem assumes a temperature of 10 degrees Celsius.