next up previous
Nächste Seite: 2. Einige Internetadressen Aufwärts: 1.3 Die Praktikumsaufgaben Vorherige Seite: 1.3.5 Lokaler Datenaustausch

1.3.6 Iterative Löser

Wir betrachten das Stokesproblem in schwacher Formulierung (Variationsformulierung).

Finde ($ \bf u$, p) $ \in$ $ \bf X$ x $ \bf M$ : = $ \bf H^{1}_{}$($ \Omega$) x L2$\scriptstyle \star$($ \Omega$) sodaß

$\displaystyle \int_{\Omega}^{}$$\displaystyle \nabla$$\displaystyle \bf u$$\displaystyle \nabla$$\displaystyle \bf v$ dx - $\displaystyle \int_{\Omega}^{}$$\displaystyle \nabla$ . $\displaystyle \bf v$p dx = $\displaystyle \int_{\Omega}^{}$$\displaystyle \bf f$$\displaystyle \bf v$ dx    $\displaystyle \forall$ $\displaystyle \bf v$ $\displaystyle \in$ $\displaystyle \bf X$  
$\displaystyle \int_{\Omega}^{}$$\displaystyle \nabla$ . $\displaystyle \bf u$q dx = 0    $\displaystyle \forall$ q $\displaystyle \in$ $\displaystyle \bf M$,  

in $ \Omega$ : = (0, 1)2 gilt, mit den Randbedingungen $ \bf u$ = (1, 0)T für y = 1 und $ \bf u$ = 0 sonst auf $ \partial$$ \Omega$. Die ( $ \bf H^{1}_{}$($ \Omega$)) nichtkonformen P1-P0 Elemente sind eine stabile Diskretisierung dieses Problems. Damit erhalten wir das Sattelpunktproblem (Formel (7.7) auf Seite 134)

$\displaystyle \left(\vphantom{
\begin{array}{cc}
A & B \\
B^T & 0
\end{array}}\right.$$\displaystyle \begin{array}{cc}
A & B \\
B^T & 0
\end{array}$ $\displaystyle \left.\vphantom{
\begin{array}{cc}
A & B \\
B^T & 0
\end{array}}\right)$$\displaystyle \left(\vphantom{
\begin{array}{c}
{\bf u} \\
p
\end{array}}\right.$$\displaystyle \begin{array}{c}
{\bf u} \\
p
\end{array}$ $\displaystyle \left.\vphantom{
\begin{array}{c}
{\bf u} \\
p
\end{array}}\right)$ = $\displaystyle \left(\vphantom{
\begin{array}{c}
{\bf f }\\
0
\end{array}}\right.$$\displaystyle \begin{array}{c}
{\bf f }\\
0
\end{array}$ $\displaystyle \left.\vphantom{
\begin{array}{c}
{\bf f }\\
0
\end{array}}\right)$ .

Mit gegebenen Vorkonditionierern $ \hat{A}$ für A und $ \hat{C}$ für - BTA-1B kann das Sattelpunktproblem mittels des vorkonditionierten Arrow-Hurwicz Algorithmus (S. 135) gelöst werden.
$\displaystyle \hat{A}$($\displaystyle \bf u^{k+1}_{}$ - $\displaystyle \bf u^{k}_{}$) = $\displaystyle \bf f$ - A$\displaystyle \bf u^{k}_{}$ - Bpk  
$\displaystyle \hat{C}$(pk + 1 - pk) = BT$\displaystyle \bf u^{k+1}_{}$  

Eine serielle Programmversion ist in seqc ( seqf) zu finden. Sie benutzt cg-Iterationen mit Diagonalskalierung für $ \hat{A}$ und $ \hat{C}$ : = M, wobei M die Massenmatrix (Gramsche Matrix) bzgl. des Druckes p darstellt. Die Matrizen A, B,$ \hat{C}$ 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 + $ \alpha$Au, p : = p + $ \alpha$BTu, u : = u + $ \alpha$Bp sind implementiert in

CrsMult(1, nu, w, u, id, ik, A, $ \alpha$)
BTCrsMult(np, nu, p, u, idb, ikb, B , $ \alpha$)
BCrsMult(np, nu, p, u, idb, ikb, B, $ \alpha$) .

\fbox {{\large E14}}
Leite aus dem sequentiellen Code eine parallele Version ab!

next up previous
Nächste Seite: 2. Einige Internetadressen Aufwärts: 1.3 Die Praktikumsaufgaben Vorherige Seite: 1.3.5 Lokaler Datenaustausch
Gundolf Haase
1999-10-04