PARTITIONED COUPLING FOR SOLVING STOKES-DARCY SYSTEMS: Difference between revisions

From MaRDI portal
T4 (talk | contribs)
 
(10 intermediate revisions by 2 users not shown)
Line 10: Line 10:


The motivation for this is to avoid problems when using simple direct solvers (sparse direct solvers for the (linearized) subproblems): bad parallel scaling, untrustworthy solution with bad conditioning.
The motivation for this is to avoid problems when using simple direct solvers (sparse direct solvers for the (linearized) subproblems): bad parallel scaling, untrustworthy solution with bad conditioning.
This is part of the  [[COMPARING_PARTITIONED_COUPLING_VS._MONOLITHIC_BLOCK_PRECONDITIONING_FOR_SOLVING_STOKES-DARCY_SYSTEMS | comparison to monolithic block preconditioning approach]]


=== Procedure ===
=== Procedure ===
Line 15: Line 16:
Splitting the problem into two subproblems (into free flow and porous media flow) and coupling (with DuMux and preCICE): use of specialized solvers for the subdomains, coupling with preCICE.
Splitting the problem into two subproblems (into free flow and porous media flow) and coupling (with DuMux and preCICE): use of specialized solvers for the subdomains, coupling with preCICE.


[[File:https://i.imgur.com/BFmhwG0.jpg]]
https://i.imgur.com/BFmhwG0.jpg


=== Involved Disciplines ===
=== Involved Disciplines ===
Line 36: Line 37:
=== Variables ===
=== Variables ===


{|
{| class="wikitable"
! Name
! Name
! Unit
! Unit
Line 50: Line 51:
|}
|}


== Process Informationen ==
== Process Information ==


=== Process Steps ===
=== Process Steps ===


{|
{| class="wikitable"
! Name
! Name
! Description
! Description
Line 73: Line 74:
| Numerical Mathematics
| Numerical Mathematics
|}
|}
=== Verwendete Methoden ===


=== Applied Methods ===
=== Applied Methods ===


{|
{| class="wikitable"
! ID
! ID
! Name
! Name
! Process Step
! Process Step
! Parameter
! Parameter
! implemented by
! Implemented By
|-
|-
| wikidata:Q7001954
| wikidata:[[wikidata:Q7001954|Q7001954]]
| Dirichlet-Neumann coupling
| Dirichlet-Neumann coupling
| Coupling
| Coupling
Line 91: Line 90:
|
|
|-
|-
| wikidata:Q1683631
| wikidata:[[wikidata:Q1683631|Q1683631]]
| Picard iteration mit fixed-point iteration
| Picard iteration mit fixed-point iteration
| Coupling
| Coupling
Line 97: Line 96:
|
|
|-
|-
| wikidata:Q25098909
| wikidata:[[wikidata:Q25098909|Q25098909]]
| inverse least-squares interface quasi-Newton
| inverse least-squares interface quasi-Newton
| Coupling
| Coupling
Line 103: Line 102:
|
|
|-
|-
| wikidata:Q1069090
| wikidata:[[wikidata:Q1069090|Q1069090]]
| block-Gauss-Seidel method
| block-Gauss-Seidel method
| Preconditioner
| Preconditioner
Line 109: Line 108:
|
|
|-
|-
| wikidata:Q2467290
| wikidata:[[wikidata:Q2467290|Q2467290]]
| Umfpack
| Umfpack
| Solver
| Solver
Line 115: Line 114:
|
|
|-
|-
| wikidata:Q56564057
| wikidata:[[wikidata:Q56564057|Q56564057]]
| PD-GMRES
| PD-GMRES
| Solver
| Solver
Line 121: Line 120:
|
|
|-
|-
| wikidata:Q56560244
| wikidata:[[wikidata:Q56560244|Q56560244]]
| Bi-CGSTAB
| Bi-CGSTAB
| Solver
| Solver
Line 127: Line 126:
|
|
|-
|-
| wikidata:Q1471828
| wikidata:[[wikidata:Q1471828|Q1471828]]
| AMG method
| AMG method
| Preconditioner
| Preconditioner
Line 133: Line 132:
|
|
|-
|-
| wikidata: Q17144437
| wikidata: [[wikidata:Q17144437|Q17144437]]
| Uzawa-iterations
| Uzawa-iterations
| Preconditioner
| Preconditioner
Line 139: Line 138:
|
|
|-
|-
| wikidata:Q1654069
| wikidata:[[wikidata:Q1654069|Q1654069]]
| ILU(0) factorization
| ILU(0) factorization
| Preconditioner
| Preconditioner
Line 145: Line 144:
|
|
|}
|}
=== Verwendete Software ===


=== Software used ===
=== Software used ===


{|
{| class="wikitable"
! ID
! ID
! Name
! Name
Line 157: Line 154:
! Programming Language
! Programming Language
! Dependencies
! Dependencies
! versioned
! Versioned
! published
! Published
! documented
! Documented
|-
|-
| sw:8713
| sw:[https://swmath.org/software/8713 8713]
| preCICE
| preCICE
| Library for coupling simulations
| Library for coupling simulations
Line 168: Line 165:
| Linux, Boost, MPI, ...
| Linux, Boost, MPI, ...
| [https://github.com/precice/precice https://github.com/precice/precice]
| [https://github.com/precice/precice https://github.com/precice/precice]
| [doi:10.18419/darus-2125]
| https://doi.org/10.18419/darus-2125
| [https://precice.org/docs.html https://precice.org/docs.html]
| [https://precice.org/docs.html https://precice.org/docs.html]
|-
|-
| sw:14293
| sw:[https://swmath.org/software/14293 14293]
| DuMux
| DuMux
| DUNE for Multi-{Phase, Component, Scale, Physics, …} flow and transport in porous media
| DUNE for Multi-{Phase, Component, Scale, Physics, …} flow and transport in porous media
Line 181: Line 178:
| [https://dumux.org/docs/ https://dumux.org/docs/]
| [https://dumux.org/docs/ https://dumux.org/docs/]
|-
|-
| sw:18749
| sw:[https://swmath.org/software/18749 18749]
| ISTL
| ISTL
| Iterative Solver Template Library” (ISTL) which is part of the “Distributed and Unified Numerics Environment” (DUNE).
| Iterative Solver Template Library” (ISTL) which is part of the “Distributed and Unified Numerics Environment” (DUNE).
Line 188: Line 185:
| Linux, DuNE (C++ Framework)
| Linux, DuNE (C++ Framework)
| [https://gitlab.dune-project.org/core/dune-istl https://gitlab.dune-project.org/core/dune-istl]
| [https://gitlab.dune-project.org/core/dune-istl https://gitlab.dune-project.org/core/dune-istl]
| [doi:10.1007/978-3-540-75755-9_82]
| https://doi.org/10.1007/978-3-540-75755-9_82
| [https://www.dune-project.org/modules/dune-istl/ https://www.dune-project.org/modules/dune-istl/]
| [https://www.dune-project.org/modules/dune-istl/ https://www.dune-project.org/modules/dune-istl/]
|}
|}
Line 194: Line 191:
=== Hardware ===
=== Hardware ===


{|
{| class="wikitable"
! ID
! ID
! Name
! Name
Line 212: Line 209:
=== Input Data ===
=== Input Data ===


{|
{| class="wikitable"
! ID
! ID
! Name
! Name
Line 219: Line 216:
! Format Representation
! Format Representation
! Format Exchange
! Format Exchange
! binary/text
! Binary/Text
! proprietary
! Proprietary
! to publish
! To Publish
! to archive
! To Archive
|-
|-
|
|
| LGS
| LGS
| O($2*10^6$) Matrix size
| O(<math>2*10^6</math>) Matrix size
| Data structure in DUNE/DuMux
| Data structure in DUNE/DuMux
|
|
Line 238: Line 235:
=== Output Data ===
=== Output Data ===


{|
{| class="wikitable"
! ID
! ID
! Name
! Name
Line 245: Line 242:
! Format Representation
! Format Representation
! Format Exchange
! Format Exchange
! binary/text
! Binary/Text
! proprietary
! Proprietary
! to publish
! To Publish
! to archive
! To Archive
|-
|-
|
|
Line 272: Line 269:
| ?
| ?
|-
|-
| wikidata:Q18812775
| wikidata:[[wikidata:Q18812775|Q18812775]]
| vtk-image files, from the daten structure
| vtk-image files, from the daten structure
| ?
| ?
Line 288: Line 285:
=== Mathematical Reproducibility ===
=== Mathematical Reproducibility ===


yes, by all parameters
Yes, by all parameters


=== Runtime Reproducibility ===
=== Runtime Reproducibility ===


yes, for same input samples
Yes, for same input samples


=== Reproducibility of Results ===
=== Reproducibility of Results ===

Latest revision as of 15:06, 7 November 2022

PARTITIONED COUPLING FOR SOLVING STOKES-DARCY SYSTEMS

PID (if applicable): arxiv:2108.13229

Problem Statement

Instationary, coupled Stokes-Darcy two-domain problem: coupled systems of free flow adjacent to permeable (porous) media

Object of Research and Objective

The motivation for this is to avoid problems when using simple direct solvers (sparse direct solvers for the (linearized) subproblems): bad parallel scaling, untrustworthy solution with bad conditioning. This is part of the comparison to monolithic block preconditioning approach

Procedure

Splitting the problem into two subproblems (into free flow and porous media flow) and coupling (with DuMux and preCICE): use of specialized solvers for the subdomains, coupling with preCICE.

https://i.imgur.com/BFmhwG0.jpg

Involved Disciplines

Environmental Systems, Mathematics

Data Streams

Model

Stokes flow in the free-flow domain Darcy’s law for the porous domain

Discretization

  • Time: first-order backward Euler scheme
  • Space: finite volumes
    • Porous Domain (Darcy): mit two-point flux approximation for pressure
    • Free Flow domain (Stokes): staggered grid for pressure and velocity, upwind scheme for approximation of fluxes

Variables

Name Unit Symbol
Pressure (Dirichlet pressure) - p
Velocity (Neumann velocity) - v

Process Information

Process Steps

Name Description Input Output Method Parameter Environment Mathematical Area
Solving Numerical Solution of the Problem LGS; Sff: vpm*n; Spm: pff Solver (UMFPACK, PD-GMRS, Bi-CGSTAB), Preconditioner (Uzawa, AMG), Coupling (preCICE, Picard iteration; inverse least-squares interface quasi-Newton) DuMux, preCICE, DUNE Numerical Mathematics

Applied Methods

ID Name Process Step Parameter Implemented By
wikidata:Q7001954 Dirichlet-Neumann coupling Coupling
wikidata:Q1683631 Picard iteration mit fixed-point iteration Coupling
wikidata:Q25098909 inverse least-squares interface quasi-Newton Coupling
wikidata:Q1069090 block-Gauss-Seidel method Preconditioner
wikidata:Q2467290 Umfpack Solver
wikidata:Q56564057 PD-GMRES Solver k (subiteration parameter, determined automatically), tolerance: relative residual...
wikidata:Q56560244 Bi-CGSTAB Solver tolerance: relative residual...
wikidata:Q1471828 AMG method Preconditioner
wikidata: Q17144437 Uzawa-iterations Preconditioner
wikidata:Q1654069 ILU(0) factorization Preconditioner

Software used

ID Name Description Version Programming Language Dependencies Versioned Published Documented
sw:8713 preCICE Library for coupling simulations v2104.0 Core library in C++; Bindings for Fortran, Python, C, Matlab; Adaptors dependant on simulation code (Fortran, Python, C, Matlab) Linux, Boost, MPI, ... https://github.com/precice/precice https://doi.org/10.18419/darus-2125 https://precice.org/docs.html
sw:14293 DuMux DUNE for Multi-{Phase, Component, Scale, Physics, …} flow and transport in porous media C++, python-bindings, utility-skripts in python Linux, DuNE (C++ Framework), cmake (module chains), package-config, compiler, build-essentials, dpg https://git.iws.uni-stuttgart.de/dumux-repositories/dumux https://zenodo.org/record/5152939#.YQva944zY2w https://dumux.org/docs/
sw:18749 ISTL Iterative Solver Template Library” (ISTL) which is part of the “Distributed and Unified Numerics Environment” (DUNE). C++ Linux, DuNE (C++ Framework) https://gitlab.dune-project.org/core/dune-istl https://doi.org/10.1007/978-3-540-75755-9_82 https://www.dune-project.org/modules/dune-istl/

Hardware

ID Name Processor Compiler #Nodes #Cores
AMD EPYC 7551P CPU 1 1

Input Data

ID Name Size Data Structure Format Representation Format Exchange Binary/Text Proprietary To Publish To Archive
LGS O(2*106) Matrix size Data structure in DUNE/DuMux numbers open ? ?

Output Data

ID Name Size Data Structure Format Representation Format Exchange Binary/Text Proprietary To Publish To Archive
Solution Vector Data Structure in DUNE/DuMux numbers open ? ?
Runtime Behavior Data Structure in DUNE/DuMux numbers open ? ?
wikidata:Q18812775 vtk-image files, from the daten structure ? ASCII or binary open ? ?

Reproducibility

Mathematical Reproducibility

Yes, by all parameters

Runtime Reproducibility

Yes, for same input samples

Reproducibility of Results

Due to floating point arithmetic, no bitwise reproducibility

Reproducibility on original Hardware

Reproducibility on other Hardware

a) Serial Computation

b) Parallel Computation

Transferability to

a) similar model parameters (other initial and boundary values)

b) other models

Legend

The following abbreviations are used in the document to indicate/resolve IDs:

doi: DOI / https://dx.doi.org/

sw: swMATH / https://swmath.org/software/

wikidata: https://www.wikidata.org/wiki/