Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in / Register
  • dumux dumux
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 96
    • Issues 96
    • List
    • Boards
    • Service Desk
    • Milestones
  • Merge requests 89
    • Merge requests 89
  • Deployments
    • Deployments
    • Releases
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • Repository
  • Wiki
    • Wiki
  • Activity
  • Graph
  • Create a new issue
  • Commits
  • Issue Boards
Collapse sidebar
  • dumux-repositories
  • dumuxdumux
  • Merge requests
  • !1827

WIP: Uzawa algorithm for Navier Stokes

  • Review changes

  • Download
  • Email patches
  • Plain diff
Closed Bernd Flemisch requested to merge feature/uzawa into master Dec 19, 2019
  • Overview 25
  • Commits 21
  • Changes 10

Provide two linear solvers for Navier-Stokes that use the Uzawa algorithm.

The Uzawa algorithm is implemented in form of the preconditioner SeqUzawa. By default, the direct UMFPack solver is used for the velocity subsystem. Alternatively, setting LinearSolver.InexactVelocitySolver to true will use one AMG cycle instead. The success is rather sensitive to the relaxation parameter LinearSolver.PreconditionerRelaxation that depends (at least) on the mesh size and the viscosity.

The solver UzawaSolver employs the preconditioner by default in a simple loop. Setting LinearSolver.AndersonAcceleration to true will speed up the convergence by using Anderson acceleration. The solver UzawaBiCGSTABBackend uses a BiCGSTAB solver around the Uzawa preconditioner.

Tests test_ff_navierstokes_sincos_uzawasolver and ...uzawapreconditioner have been added to test/freeflow/navierstokes/sincos and are supposed to reproduce the results of test_ff_navierstokes_sincos_instationary.

The promising fact is that both solvers work, meaning that we are no longer restricted to direct solvers. However, the number of required iterations is very high, especially when starting from an already small residual. For the considered tests, the UzawaBiCGSTABBackend is superior to the Anderson-accelerated UzawaSolver.

Dumux Day 25.03.20 Only consider Uzawa preconditioner for 3.2

TODO

  • Remove dependency on grid geometry
  • Use Dune::Indices for improved readability
  • Revise incorporation of boundary conditions in Uzawa preconditioner
  • Make Uzawa preconditioner usable without solver factory
  • Extract parameter tree conversion from solver factory to make it reusable
  • Revisit memory usage of Anderson Acceleration (do we really need maxIter-sized containers? can be very large)
  • Maybe extend for multidomain problems, i.e., allow to handle additional matrix blocks with given preconditioners
Edited Mar 25, 2020 by Kilian Weishaupt
Assignee
Assign to
Reviewer
Request review from
Time tracking
Source branch: feature/uzawa