dumux merge requestshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests2021-08-31T12:45:02Zhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2811WIP Feature/p-foamgrid2021-08-31T12:45:02ZTimo Kochtimokoch@math.uio.noWIP Feature/p-foamgridhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2805Draft: [ci] put pl status job in separate yml file2021-09-28T14:47:54ZDennis GläserDraft: [ci] put pl status job in separate yml filehttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2796WIP [citation] Draft2022-07-01T21:20:12ZTimo Kochtimokoch@math.uio.noWIP [citation] Drafthttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2730Draft: Advection Diffusion Model2022-02-22T15:00:44ZNed ColtmanDraft: Advection Diffusion ModelI'm not sure if this is something we would really want, but I set it up for a different module and mentioned this in issue #1001.
This is the same as the tracer1p model with a stationary velocity field, but it does not assume that the ...I'm not sure if this is something we would really want, but I set it up for a different module and mentioned this in issue #1001.
This is the same as the tracer1p model with a stationary velocity field, but it does not assume that the domain is a porous medium. It should solve the transport equation decoupled from any momentum balance.
The test calculates a velocity field, passes this to a spatialParams, then calculates transport on the same domain with a fixed velocity field. To make it interesting, it's a rectangular domain with a circle cut out of the center.
This should produce the same result as the tracer1p model with the same velocity field and a porosity of 1.
If this is something we do want to include, It would likely benefit from a bit of refactoring.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2629WIP: Feature/sequential impes tests2021-05-20T17:47:36ZTimo Kochtimokoch@math.uio.noWIP: Feature/sequential impes testsRelated to #869Related to #869https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2572[WIP] Feature/dumux solution vector2022-02-25T12:25:33ZKilian Weishaupt[WIP] Feature/dumux solution vector__TODO__:
- [ ] decide whether this is the way to go (maybe do some performance testing)
- [ ] specify interface
- [ ] make sure the `Assembler` or `NewtonSolver` already get the `native()` object (in context of residuals__TODO__:
- [ ] decide whether this is the way to go (maybe do some performance testing)
- [ ] specify interface
- [ ] make sure the `Assembler` or `NewtonSolver` already get the `native()` object (in context of residualshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2520WIP Feature/solution state2021-03-29T15:02:53ZDennis GläserWIP Feature/solution statehttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2519WIP Feature/new assembler2021-03-30T10:11:29ZDennis GläserWIP Feature/new assemblerhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2495Draft: [temp][hack] Change free flow block structure to old version:2021-04-14T13:19:01ZKilian WeishauptDraft: [temp][hack] Change free flow block structure to old version:DO NOT MERGE THIS. ONLY FOR DEMONSTRATIVE PURPOSEDO NOT MERGE THIS. ONLY FOR DEMONSTRATIVE PURPOSEhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2494WIP Test/nonisothermal2021-11-24T10:29:34ZTimo Kochtimokoch@math.uio.noWIP Test/nonisothermalSee !2473. Based on !2471
Shows unphysical temperature gradient.
![Screenshot_2021-03-02_at_14.00.47](/uploads/97d41ded8307b900fa2ea99a54400903/Screenshot_2021-03-02_at_14.00.47.png)
* [x] See if we can get a better solution by addin...See !2473. Based on !2471
Shows unphysical temperature gradient.
![Screenshot_2021-03-02_at_14.00.47](/uploads/97d41ded8307b900fa2ea99a54400903/Screenshot_2021-03-02_at_14.00.47.png)
* [x] See if we can get a better solution by adding $`\vec{v}\cdot\nabla p`$ in the energy balance somehow
For incompressible fluids we have at least two options:
* Assemble internal energy fluxes instead of enthalpy fluxes, the volume work term disappears (not generic)
* Add the missing term and keep assembling enthalpy fluxes
There might be other solution by inserting the continuity equation to turn the term into some time derivative.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2448WIP Feature/new assembly multidomain2021-02-25T20:58:24ZDennis GläserWIP Feature/new assembly multidomainDisclaimer: this is very drafty and does not work yet. No need to review. For now this MR is only here in order to have a place to discuss about this.
Depends also on !2469, in order to harmonize cc/box scvfs and fix vtk output for box-...Disclaimer: this is very drafty and does not work yet. No need to review. For now this MR is only here in order to have a place to discuss about this.
Depends also on !2469, in order to harmonize cc/box scvfs and fix vtk output for box-facet-coupling models.Dennis GläserDennis Gläserhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2433WIP: Feature/new staggered higher order2022-03-28T09:14:46ZNed ColtmanWIP: Feature/new staggered higher ordertodos:
- [x] Sincos higher order test stationary (pass)
- [x] Sincos higher order test instationary (fail)
- [x] 3D Channel higher order test (pass)
- [x] Kovaznay higher order test stationary (fail)
- [ ] Find errors that would cause ba...todos:
- [x] Sincos higher order test stationary (pass)
- [x] Sincos higher order test instationary (fail)
- [x] 3D Channel higher order test (pass)
- [x] Kovaznay higher order test stationary (fail)
- [ ] Find errors that would cause bad convergence and solution differencesNed ColtmanNed Coltmanhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2295WIP Feature/gridvars based assembler2021-03-25T08:53:17ZDennis GläserWIP Feature/gridvars based assembler<!--
Thanks for sending a merge request!
If this is your first time, read our [contributing guidelines](/CONTRIBUTING.md)
-->
**What this MR does / why does DuMux need it**:
Introduce grid variables-based, discretization scheme-agnost...<!--
Thanks for sending a merge request!
If this is your first time, read our [contributing guidelines](/CONTRIBUTING.md)
-->
**What this MR does / why does DuMux need it**:
Introduce grid variables-based, discretization scheme-agnostic assembler class, and make the implementations of `PDESolver` support it.
TODO:
- [ ] add support for cell-centered schemes
- [ ] add analytic assembly
- [ ] define `Operators` for all available models and test new layout with the entire test suite?
addresses parts of #940https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2292WIP: Feature/nonlinear schemes decomposition negative2021-08-24T10:33:28ZTimo Kochtimokoch@math.uio.noWIP: Feature/nonlinear schemes decomposition negativehttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2272WIP Feature/multidomain analytic jac rebase2020-10-02T08:44:24ZTimo Kochtimokoch@math.uio.noWIP Feature/multidomain analytic jac rebasedo not merge. rebase of !1703. Should be force pushed to !1703 if it's working again.
Something went wrong in the rebase so the test fails.do not merge. rebase of !1703. Should be force pushed to !1703 if it's working again.
Something went wrong in the rebase so the test fails.https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2244Feature/update box couplingdata2020-10-27T13:28:29ZMartin SchneiderFeature/update box couplingdataUpdate the box coupling such that it works for general non-matching grids.
This is done by introducing general projections onto the stokes faces.Update the box coupling such that it works for general non-matching grids.
This is done by introducing general projections onto the stokes faces.Martin SchneiderMartin Schneiderhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2162[WIP] Feature/restructure ff fluxvars2020-06-04T09:38:21ZKilian Weishaupt[WIP] Feature/restructure ff fluxvarshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2125WIP: [assembly] Add element view for assembly routines2021-02-25T21:01:55ZTimo Kochtimokoch@math.uio.noWIP: [assembly] Add element view for assembly routinesSuggestion for an element view for assembly rountinesSuggestion for an element view for assembly rountineshttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/2112WIP: Cleanup/assembly properties2021-03-25T08:52:56ZTimo Kochtimokoch@math.uio.noWIP: Cleanup/assembly properties* [ ] test everything
* [ ] update changelog for `ElementBoundaryTypes` in `LocalResidual`
* [ ] think about `NumEqVector`* [ ] test everything
* [ ] update changelog for `ElementBoundaryTypes` in `LocalResidual`
* [ ] think about `NumEqVector`Dennis GläserDennis Gläserhttps://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/merge_requests/1989[WIP] [linear] Add first draft of SIMPLE preconditioner2021-04-13T12:38:00ZKilian Weishaupt[WIP] [linear] Add first draft of SIMPLE preconditioner__SIMPLE__
Goal: solve
```math
\begin{pmatrix}
A & B\\
C & D
\end{pmatrix}
\begin{pmatrix}
u\\
p
\end{pmatrix}
=
\begin{pmatrix}
f\\
g
\end{pmatrix}
```
__Equations__
Exact velocity: $`~~~~~~u = u^* + \delta u...__SIMPLE__
Goal: solve
```math
\begin{pmatrix}
A & B\\
C & D
\end{pmatrix}
\begin{pmatrix}
u\\
p
\end{pmatrix}
=
\begin{pmatrix}
f\\
g
\end{pmatrix}
```
__Equations__
Exact velocity: $`~~~~~~u = u^* + \delta u ~~~~~~~ (1)`$
Exact pressure: $`~~~~~~p = p^* + \delta p ~~~~~~~ (2)`$
Exact velocity equation: $`~~~~~~A u + B p = f ~~~~~~~ (3)`$
Approximate velocity equation using some pressure guess $`p^*`$: $`~~~~~~A u^* + B p^* = f ~~~~~~~ (4)`$
Substract: (3-4) : $`~~~~~~A (u - u^*) + B (p-p^*) = 0 ~~~~~~~ (5)`$
$`~~~~~~A \delta u + B \delta p = 0 ~~~~~~~ (6)`$
Assumption (SIMPLE): $`~~~~~~diag(A) \approx A ~~~~~~~ (7)`$
Rearrange (6) and insert (7): $`~~~~~~\delta u = - diag(A)^{-1} B \delta p~~~~~~~ (7)`$
Mass conservation: $`~~~~~~C u = g~~~~~~~ (8)`$
$`~~~~~~C (u^* + \delta u) = g~~~~~~~ (9)`$
$`~~~~~~C (u^* + - C diag(A)^{-1} B \delta p) = g~~~~~~~ (10)`$
$`~~~~~~C u^* = g + C diag(A)^{-1} B \delta p~~~~~~~ (11)`$
Schur complement $`~~~~~~C diag(A)^{-1} B \delta p = C u^* - g ~~~~~~~ (12)`$
__Algorithm__
1.) Solve (4) for $`u^*`$
2.) Solve (12) for $`\delta p`$
3.) Get $`\delta u`$ from (7)
4.) update $`p=p^* + \alpha \delta p`$
5.) update $`u= u^* +\delta u`$
Naive implementation of https://www.cs.umd.edu/~elman/papers/tax.pdf
Converges, but is slower than Uzawa.
The internal GMRES solver to invert the Schur complement is not preconditioned yet (Richardson, w = 1).
Richardson seems to be the only preconditioner that does not require an assembled matrix.
Maybe we can write our own Jacobi preconditioner? If one can apply the action of the Schur complement without a matrix (what we do right now), is it also possible to apply the inverse of its diagonal without having the matrix?
__Udpate__ : There seem to be various matrix-free preconditioning methods
http://www2.cs.cas.cz/~tuma/ps/cutu06.pdf
https://hal.inria.fr/inria-00074080/document
http://www2.cs.cas.cz/semincm/lectures/2009-05-15-DuintjerTebbens.pdf
https://arxiv.org/pdf/1805.11930.pdf
https://arxiv.org/pdf/2006.06052.pdf
https://gitlab.dune-project.org/exadune/exadune-appl/-/blob/feature/blockiterative-preconditioner-FlexibleGMRES/src/blockiterativesolver/blockdiagonalpreconditioner.hh
A very simple (and probably expensive) option to test if preconditioning helps inverting the approximate Schur $`\tilde{S}`$ complement would be
```math
\tilde{S}^{-1}_{0,0} = \left(\tilde{S} \cdot (1, 0, ... ,n)^T \right) \cdot (1, 0, ... ,n)^T \\
\tilde{S}^{-1}_{1,1} = \left(\tilde{S} \cdot (0, 1, ... ,n)^T \right) \cdot (0, 1, ... ,n)^T \\
....
```
With that, one could construct a Jacobi preconditioner after doing n matrix vector operations.