Commit 1d1ddecc authored by Praetorius, Simon's avatar Praetorius, Simon

Merge branch 'issue/documentation' into 'develop'

added documentation of DOFVector and DOFMatrix and improved the documentation of some other classes

See merge request !85
parents 4bf4338f 40f931c6
Pipeline #1761 passed with stage
in 33 minutes and 58 seconds
...@@ -36,6 +36,8 @@ namespace AMDiS ...@@ -36,6 +36,8 @@ namespace AMDiS
* Since an intersection has a geometry (and localGeometry) different from the * Since an intersection has a geometry (and localGeometry) different from the
* geometry (and localGeometry) of the entity it belongs to, these objects * geometry (and localGeometry) of the entity it belongs to, these objects
* are provided as well. * are provided as well.
*
* \tparam LC LocalContext, either element or intersection
**/ **/
template <class LC> template <class LC>
struct ContextGeometry struct ContextGeometry
...@@ -63,22 +65,25 @@ namespace AMDiS ...@@ -63,22 +65,25 @@ namespace AMDiS
{} {}
public: public:
/// Return the bound element (entity of codim 0)
Element const& element() const Element const& element() const
{ {
return *element_; return *element_;
} }
/// Return the LocalContext, either the element or an intersection.
LocalContext const& localContext() const LocalContext const& localContext() const
{ {
return *localContext_; return *localContext_;
} }
/// Return the geometry of the \ref Element
Geometry const& geometry() const Geometry const& geometry() const
{ {
return *geometry_; return *geometry_;
} }
/// Return the geometry of the element, or geometryInInside of the intersection
LocalGeometry const& localGeometry() const LocalGeometry const& localGeometry() const
{ {
return localGeometry_impl(IsEntity{}); return localGeometry_impl(IsEntity{});
...@@ -87,7 +92,7 @@ namespace AMDiS ...@@ -87,7 +92,7 @@ namespace AMDiS
public: 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> template <class Coordinate>
decltype(auto) local(Coordinate const& p) const decltype(auto) local(Coordinate const& p) const
{ {
......
...@@ -35,7 +35,7 @@ namespace AMDiS ...@@ -35,7 +35,7 @@ namespace AMDiS
* **Example:** * **Example:**
* ``` * ```
* auto v = makeDOFVectorView(prob.solutionVector(),0); * 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> template <class Expr>
......
...@@ -60,7 +60,7 @@ namespace AMDiS ...@@ -60,7 +60,7 @@ namespace AMDiS
/// A LocalFunction representing the derivative of the DOFVector on a bound element /// A LocalFunction representing the derivative of the DOFVector on a bound element
class GradientLocalFunction; 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; class LocalFunction;
public: public:
......
...@@ -11,6 +11,15 @@ ...@@ -11,6 +11,15 @@
namespace AMDiS 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> template <class RowBasisType, class ColBasisType, class Backend>
class DOFMatrixBase class DOFMatrixBase
{ {
...@@ -99,7 +108,24 @@ namespace AMDiS ...@@ -99,7 +108,24 @@ namespace AMDiS
backend_.insert(flatMultiIndex(row), flatMultiIndex(col), value); 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, template <class ContextTag, class Operator,
class RowTreePath = RootTreePath, class ColTreePath = RootTreePath> class RowTreePath = RootTreePath, class ColTreePath = RootTreePath>
void addOperator(ContextTag contextTag, Operator const& preOp, void addOperator(ContextTag contextTag, Operator const& preOp,
......
...@@ -16,7 +16,15 @@ ...@@ -16,7 +16,15 @@
namespace AMDiS 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> template <class BasisType, class Backend>
class DOFVectorBase class DOFVectorBase
: public DOFVectorInterface : public DOFVectorInterface
......
...@@ -16,8 +16,7 @@ ...@@ -16,8 +16,7 @@
namespace AMDiS namespace AMDiS
{ {
/// \brief The basic container that stores a base matrix and a corresponding /// \brief The basic container that stores a base matrix
/// row/column feSpace.
template <class ValueType> template <class ValueType>
class MtlMatrix class MtlMatrix
{ {
......
...@@ -9,7 +9,7 @@ ...@@ -9,7 +9,7 @@
namespace AMDiS 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> template <class ValueType>
class MtlVector class MtlVector
{ {
......
...@@ -13,6 +13,19 @@ namespace AMDiS ...@@ -13,6 +13,19 @@ namespace AMDiS
{ {
namespace Operation 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> template <class F, class... Gs>
struct Composer struct Composer
{ {
...@@ -48,7 +61,7 @@ namespace AMDiS ...@@ -48,7 +61,7 @@ namespace AMDiS
}; };
#endif #endif
/// Generator function for \ref composer /// Generator function for \ref Composer
template <class F, class... Gs> template <class F, class... Gs>
constexpr auto compose(F&& f, Gs&&... gs) constexpr auto compose(F&& f, Gs&&... gs)
{ {
......
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