next up [*] [*]
Next: 14.3.6 Pre-Conditioned GMRES(k,m) Up: 14.3 Linear Solver Algorithms Previous: 14.3.4 Pre-conditioned Bi-Conjugate Gradient

   
14.3.5 BiCGStab(l)


Select an initial guess
\(\underline{\phi}\sp{0}\)
\(\hat{\underline{r}}\sp{0} = \tilde{\underline{r}} = \underline{r}\sp{0} = \underline{b} - \dunder{A} \underline{\phi}\sp{0}\)
k=0
\(\rho = 1, \omega = 1, \alpha = 0\)
\(\hat{\underline{\phi}}\sp{0} = \underline{\phi}\sp{0} \)
do
\(\rho = -\omega \rho\sb{0}\)
for j from 0 to l-1
\(\rho\sb{1} = (\tilde{\underline{r}})\sp{T} \hat{\underline{r}}\sp{j}\)
\(\beta = \alpha \rho\sb{1} / \rho\)
\(\rho = \rho\sb{1}\)
for i from 0 to j
\(\hat{\underline{u}}\sp{i} = \hat{\underline{r}}\sp{i} - \beta \hat{\underline{u}}\sp{i}\)
for end
\(\hat{\underline{u}}\sp{j+1} = \dunder{A} \hat{\underline{u}}\sp{j} \)
\(\gamma = (\hat{\underline{u}}\sp{j+1})\sp{T} \tilde{\underline{r}}\)
\(\alpha = \rho / \gamma\)
for i from 0 to j
\(\hat{\underline{r}}\sp{i} = \hat{\underline{r}}\sp{i} - \alpha \hat{\underline{u}}\sp{i}\)
for end
\(\hat{\underline{r}}\sp{j+1} = \dunder{A} \hat{\underline{r}}\sp{j}\)
\(\hat{\underline{\phi}}\sp{0} = \hat{\underline{\phi}}\sp{0} + \alpha \hat{\underline{u}}\sp{0}\)
for end


for j from 1 to l
\(\underline{q}\sp{j} = \hat{\underline{r}}\sp{j} \)
for i from 1 to j-1
\(\tau\sb{ij} = \frac{1}{\sigma\sb{i}}(\underline{q}\sp{j})\sp{T} \underline{q}\sp{i}\)
\(\underline{q}\sp{j} = \underline{q}\sp{j} - \tau\sb{ij} \underline{q}\sp{i}\)
for end
\(\sigma\sb{j} = (\underline{q}\sp{j})\sp{T} \underline{q}\sp{j}\)
\(\gamma\sb{j}\sp{1} = \frac{1}{\sigma\sb{j}}(\hat{\underline{r}}\sp{0})\sp{T} \underline{q}\sp{j} \)
for end


\(\gamma\sb{l} = \gamma\sb{l}\sp{1} \)
\(\omega = \gamma\sb{l}\)
for j down from l-1 to 1
\(\gamma\sb{j} = \gamma\sb{j}\sp{1} - \sum\sb{i=j+1}\sp{l} \tau\sb{ji}\gamma\sb{i}\)
for end
for j from 1 to l-1
\(\gamma\sb{j}\sp{2} = \gamma\sb{j+1} + \sum\sb{i=j+1}\sp{l-1} \tau\sb{ji}\gamma\sb{i+1}\)
for end
\(\hat{\underline{\phi}}\sp{0} = \hat{\underline{\phi}}\sp{0} + \gamma\sb{1}\hat{\underline{r}}\sp{0}\)
\(\hat{\underline{r}}\sp{0} = \hat{\underline{r}}\sp{0} - \gamma\sb{l}\sp{1}\hat{\underline{r}}\sp{l}\)
\(\hat{\underline{u}}\sp{0} = \hat{\underline{u}}\sp{0} - \gamma\sb{l}\hat{\underline{u}}\sp{l}\)
for j from l to l-1
\(\hat{\underline{\phi}}\sp{0} = \hat{\underline{\phi}}\sp{0} + \gamma\sb{j}\sp{2}\hat{\underline{r}}\sp{j}\)
\(\hat{\underline{r}}\sp{0} = \hat{\underline{r}}\sp{0} - \gamma\sb{j}\sp{1}\hat{\underline{r}}\sp{j}\)
\(\hat{\underline{u}}\sp{0} = \hat{\underline{u}}\sp{0} - \gamma\sb{j}\hat{\underline{u}}\sp{j}\)
for end
k=k+l
\(\underline{u}\sp{k-1} = \hat{\underline{u}}\sp{0}\)
\(\underline{r}\sp{k} = \hat{\underline{r}}\sp{0}\)
\(\underline{\phi}\sp{k} = \hat{\underline{\phi}}\sp{0}\)
while not converged




2002-12-09