- 25 Jul, 2022 6 commits
-
-
graeser authored
* Document divergence evaluation code * Add support for directly passing a tree path to `testFunction()` and `trialFunction()` * When adding integrated (bi)linear forms this is now reflected in the assembly code by integrating those terms separately. This has the advantage, that different quadrature rules can be used for different terms. Example: While `integrate(u*v + dot(grad(u),grad(v)))` uses a single quadrature rule for the whole expresion, using `integrate(u*v) + integrate(dot(grad(u),grad(v)))` will use separate rules for both terms.
-
graeser authored
-
graeser authored
-
graeser authored
-
graeser authored
`FieldVector<K,n>{0}` leads to aggregate initialization which only initializes the first entry in contrast to `FieldVector<K,n>(0)` which calls the constructor that properly initializes all entries.
-
graeser authored
* Implement more cases for `operator*` and `dot`. * Make cache a (non-static) member of the local assembler. This allows to do thread-parallel assembly, if the local assembler is thread-local. Before this patch, the static cache member was shared among threads which leads to concurent read/write access. * Add utility to reconstruct the global basis. The local assembler may need the global basis. Using this utility it can be extracted from the forms (that already know it) and does not need to be passed to `integrate(...)` separately.
-
- 17 Dec, 2021 4 commits
-
-
graeser authored
-
graeser authored
-
graeser authored
This allows to uniformly handle linear transformation of raw values and forms.
-
graeser authored
* Move handling of raw values to generic `productForm` function * Unify handling of raw values by wrapping them into forms * Guard `operator*` using concept check to avoid that is activates `Dune::dot` and thus leads to ambiguity
-
- 16 Dec, 2021 5 commits
-
-
graeser authored
The `tuple`-specific version leads to shorter error messages compared to the generic `Hybrid::forEach` implementation.
-
graeser authored
This solves a nasty ambiguity problem without having to qualify the call to `Forms::dot`: The `Dune::dot(a,b)` function from `dune/common/dotproduct.hh` is based on `operator*` and SFINAE-removed from the overload set if `a*b` is not a valid expression. Hence if `operator*` is available for forms, the `Dune::dot` function is available and leads to ambiguity. By disabling `Forms::operator*` for non-supported types this is avoided, because `Dune::dot` no longer exists.
-
graeser authored
* Provide forward declarations for dot-overloads * Explicitly qualify internal calls to dot
-
graeser authored
We only allow local coordinates and the type is easily accessible. Hence we can avoid making it a template of `operator()`.
-
graeser authored
We never use ternary product. Hence we can split the implementation into the product of two forms and a transformation of a single form. While this introduces some code duplication, it increases clarity and avoids a lot of `tuple` and variadic template code.
-
- 29 Nov, 2021 7 commits
- 09 Nov, 2021 2 commits
- 08 Nov, 2021 3 commits
- 27 Oct, 2021 1 commit
-
-
graeser authored
* Implement distributive law * Implement transposing and operator- * Support generic products * Add some documentation * Put more use examples into comments of examples: * Sum of linear- and bilinear forms * Constant and non-constant coeffients * Linear elasticity
-
- 25 Oct, 2021 3 commits
- 24 Oct, 2021 6 commits
- 22 Oct, 2021 1 commit
-
-
graeser authored
-