Nächste Seite: 2. Einige Internetadressen
Aufwärts: 1.3 Die Praktikumsaufgaben
Vorherige Seite: 1.3.5 Lokaler Datenaustausch
Wir betrachten das Stokesproblem in schwacher Formulierung
(Variationsformulierung).
Finde
(
, p)
x
: =
(
) x L2
(
) sodaß
![$\displaystyle \int_{\Omega}^{}$](img31.gif) ![$\displaystyle \nabla$](img32.gif) ![$\displaystyle \bf u$](img33.gif) ![$\displaystyle \nabla$](img32.gif) dx - ![$\displaystyle \int_{\Omega}^{}$](img31.gif) . p dx |
= |
![$\displaystyle \int_{\Omega}^{}$](img31.gif) ![$\displaystyle \bf f$](img35.gif) dx ![$\displaystyle \bf X$](img38.gif) |
|
![$\displaystyle \int_{\Omega}^{}$](img31.gif) . q dx |
= |
0 q , |
|
in
: = (0, 1)2 gilt, mit den Randbedingungen
= (1, 0)T für y = 1 und
= 0 sonst auf
![$ \partial$](img40.gif)
.
Die (
(
)) nichtkonformen P1-P0
Elemente sind eine stabile Diskretisierung dieses Problems.
Damit erhalten wir das Sattelpunktproblem (Formel (7.7) auf Seite 134)
Mit gegebenen Vorkonditionierern
für A und
für
- BTA-1B
kann das Sattelpunktproblem mittels des vorkonditionierten
Arrow-Hurwicz Algorithmus (S. 135) gelöst werden.
( - ) |
= |
- A - Bpk |
|
(pk + 1 - pk) |
= |
BT![$\displaystyle \bf u^{k+1}_{}$](img53.gif) |
|
Eine serielle Programmversion ist in seqc ( seqf) zu finden.
Sie benutzt cg-Iterationen mit Diagonalskalierung für
und
: = M, wobei
M die Massenmatrix (Gramsche Matrix) bzgl. des Druckes p darstellt.
Die Matrizen
A, B,
werden in
GetGradMatrix(nx, ny, 0, 0, A, id, ik)
GetDivMatrix(nx, ny, 0, 1, B, idb, ikb)
GetMassMatrix(nx, ny, 1, 1, M)
generiert. Die Diagonale von A erhält man aus
AccuDiag(nx, ny, sk, id, d)
Der Vektor der rechten Seite wird mit
GetRhs(nx, ny, f, 0, 1, 0, 1) ,
GetRhsPressure(nx, ny, g, 0, 1, 0, 1)
initialisiert. Randbedingungen werden mittels
DirichletBc(nx, ny, A, id, ik, f, u)
eingebaut und die Anfangslösung wird mit
SetU(nx, ny, u, 0, 1, 0, 1)
initialisiert.
Die Operationen
w : = w +
Au,
p : = p +
BTu,
u : = u +
Bp sind implementiert in
CrsMult(1, nu, w, u, id, ik, A,
)
BTCrsMult(np, nu, p, u, idb, ikb, B ,
)
BCrsMult(np, nu, p, u, idb, ikb, B,
) .
![\fbox {{\large E14}}](img57.gif)
- Leite aus dem sequentiellen Code eine parallele Version ab!
Nächste Seite: 2. Einige Internetadressen
Aufwärts: 1.3 Die Praktikumsaufgaben
Vorherige Seite: 1.3.5 Lokaler Datenaustausch
Gundolf Haase
1999-10-04