diff --git a/src/amdis/ContextGeometry.hpp b/src/amdis/ContextGeometry.hpp index acc8c0b4bf46ae6cc4a1df6b599f3e9ae2184845..66f83f5dd050948cac8a38d4a3091ebdd14c767c 100644 --- a/src/amdis/ContextGeometry.hpp +++ b/src/amdis/ContextGeometry.hpp @@ -36,6 +36,8 @@ namespace AMDiS * Since an intersection has a geometry (and localGeometry) different from the * geometry (and localGeometry) of the entity it belongs to, these objects * are provided as well. + * + * \tparam LC LocalContext, either element or intersection **/ template <class LC> struct ContextGeometry @@ -63,22 +65,25 @@ namespace AMDiS {} public: - + /// Return the bound element (entity of codim 0) Element const& element() const { return *element_; } + /// Return the LocalContext, either the element or an intersection. LocalContext const& localContext() const { return *localContext_; } + /// Return the geometry of the \ref Element Geometry const& geometry() const { return *geometry_; } + /// Return the geometry of the element, or geometryInInside of the intersection LocalGeometry const& localGeometry() const { return localGeometry_impl(IsEntity{}); @@ -87,7 +92,7 @@ namespace AMDiS public: - /// Coordinate `p` given in `localGeometry`, transformed to coordinate in `geometry`. + /// Coordinate `p` given in `localGeometry`, transformed to coordinate in geometry of the LocalContext. template <class Coordinate> decltype(auto) local(Coordinate const& p) const { diff --git a/src/amdis/gridfunctions/DOFVectorView.hpp b/src/amdis/gridfunctions/DOFVectorView.hpp index ff4cf0f5c31fa134ecc70ca77c71d3d068f1d08e..55f0bf74ecd8cc6679aaab03d16bdc3c83a1bbc4 100644 --- a/src/amdis/gridfunctions/DOFVectorView.hpp +++ b/src/amdis/gridfunctions/DOFVectorView.hpp @@ -35,7 +35,7 @@ namespace AMDiS * **Example:** * ``` * auto v = makeDOFVectorView(prob.solutionVector(),0); - * v.interpolate([](auto const& x) { return x[0]; }); + * v.interpolate_noalias([](auto const& x) { return x[0]; }); * ``` **/ template <class Expr> diff --git a/src/amdis/gridfunctions/DiscreteFunction.hpp b/src/amdis/gridfunctions/DiscreteFunction.hpp index 47d9d07eef9265e458a3193faa709504fe7fe848..609a1af50a983425db12edd6f5f726e180cfb515 100644 --- a/src/amdis/gridfunctions/DiscreteFunction.hpp +++ b/src/amdis/gridfunctions/DiscreteFunction.hpp @@ -60,7 +60,7 @@ namespace AMDiS /// A LocalFunction representing the derivative of the DOFVector on a bound element class GradientLocalFunction; - /// A LocalFunction representign the value the DOFVector on a bound element + /// A LocalFunction representing the value the DOFVector on a bound element class LocalFunction; public: diff --git a/src/amdis/linearalgebra/DOFMatrixBase.hpp b/src/amdis/linearalgebra/DOFMatrixBase.hpp index 906deface3c0a599e3539332d8f7ddd2c58f7ea8..116032d57dee58a52ecf1256936a16065919b15c 100644 --- a/src/amdis/linearalgebra/DOFMatrixBase.hpp +++ b/src/amdis/linearalgebra/DOFMatrixBase.hpp @@ -11,6 +11,15 @@ namespace AMDiS { + /** + * Basis implementation of DOFMatrix, i.e. a sparse matrix storing all the + * assembled Operators indexed with DOF indices. The matrix data is associated + * to a row and column global basis. + * + * \tparam RB Basis of the matrix rows + * \tparam CB Basis of matrix columns + * \tparam Backend A linear-algebra backend for the matrix storage + **/ template <class RowBasisType, class ColBasisType, class Backend> class DOFMatrixBase { @@ -99,7 +108,24 @@ namespace AMDiS backend_.insert(flatMultiIndex(row), flatMultiIndex(col), value); } - /// Associate a local operator with this DOFMatrix + /// \brief Associate a local operator with this DOFMatrix + /** + * Stores an operator in a list that gets assembled during a call to \ref assemble(). + * The operator may be assigned to a specific context, i.e. either an element + * operator, an intersection operator, or a boundary operator. + * The \p row and \p col tree paths specify the sub-basis for test and trial + * functions the operator is applied to. + * + * \tparam ContextTag One of \ref tag::element_operator, \ref tag::intersection_operator + * or \ref tag::boundary_operator indicating where to assemble this operator. + * \tparam PreOperator An pre-operator that can be bound to a gridView, or a valid + * GridOperator. + * \tparam row A tree-path for the RowBasis + * \tparam col A tree-path for the ColBasis + * + * [[expects: row is valid tree-path in RowBasis]] + * [[expects: col is valid tree-path in ColBasis]] + **/ template <class ContextTag, class Operator, class RowTreePath = RootTreePath, class ColTreePath = RootTreePath> void addOperator(ContextTag contextTag, Operator const& preOp, diff --git a/src/amdis/linearalgebra/DOFVectorBase.hpp b/src/amdis/linearalgebra/DOFVectorBase.hpp index de0ed9fc06031af098f8f99076e6a1d51c2afe1a..f4752b162330c7a59ab522948f5d4f61e6350ebb 100644 --- a/src/amdis/linearalgebra/DOFVectorBase.hpp +++ b/src/amdis/linearalgebra/DOFVectorBase.hpp @@ -16,7 +16,15 @@ namespace AMDiS { - /// The basic container that stores a base vector and a corresponding basis + /// \brief The basic container that stores a base vector and a corresponding basis + /** + * Basis implementation of DOFVector, i.e. a vector storing all the + * assembled Operators indexed with DOF indices. The vector data is associated + * to a global basis. + * + * \tparam B Basis of the vector + * \tparam Backend A linear algebra backend implementing the storage and operations. + **/ template <class BasisType, class Backend> class DOFVectorBase : public DOFVectorInterface diff --git a/src/amdis/linearalgebra/mtl/DOFMatrix.hpp b/src/amdis/linearalgebra/mtl/DOFMatrix.hpp index 3142e940ef1859902f0e788ef74d58654a0e9eaa..0e62a990a6d0dd3fcf5b83339bcbd0bbf3bc3551 100644 --- a/src/amdis/linearalgebra/mtl/DOFMatrix.hpp +++ b/src/amdis/linearalgebra/mtl/DOFMatrix.hpp @@ -16,8 +16,7 @@ namespace AMDiS { - /// \brief The basic container that stores a base matrix and a corresponding - /// row/column feSpace. + /// \brief The basic container that stores a base matrix template <class ValueType> class MtlMatrix { diff --git a/src/amdis/linearalgebra/mtl/DOFVector.hpp b/src/amdis/linearalgebra/mtl/DOFVector.hpp index 49057cdaa3f12fcccefd93e1c98072302a7e30c0..36d3edb6ee7fbea4ab694b5b21d681912ebccf9d 100644 --- a/src/amdis/linearalgebra/mtl/DOFVector.hpp +++ b/src/amdis/linearalgebra/mtl/DOFVector.hpp @@ -9,7 +9,7 @@ namespace AMDiS { - /// The basic container that stores a base vector and a corresponding basis + /// The basic container that stores a base vector data template <class ValueType> class MtlVector { diff --git a/src/amdis/operations/Composer.hpp b/src/amdis/operations/Composer.hpp index 891be0af1ed670899ab89a75c9ff2c6b1ca449e8..2e1338f0fa02ede1bdd03adf34b5f9679f6bca2b 100644 --- a/src/amdis/operations/Composer.hpp +++ b/src/amdis/operations/Composer.hpp @@ -13,6 +13,19 @@ namespace AMDiS { namespace Operation { + /// \brief Composition of Functors. + /** + * \ingroup operations + * Implement the composition `c:=f(g1,g2,...,gN), where `f` is an N-ary functor + * `gI` are functors of the same arity. The composition is defined as + * ``` + * c(a1,a2,...,aM) := f(g1(a1,a2,..,aM), g2(a1,a2,...,aM),...,gN(a1,a2,...,aM)) + * ``` + * + * **Requirements:** + * - sizeof...(Gs) == N, with N = arity(F) + * - arity(Gs[0]) == arity(Gs[i]) for i = 1,...,N-1 + **/ template <class F, class... Gs> struct Composer { @@ -48,7 +61,7 @@ namespace AMDiS }; #endif - /// Generator function for \ref composer + /// Generator function for \ref Composer template <class F, class... Gs> constexpr auto compose(F&& f, Gs&&... gs) {