[Dune] [#928] breakdown of BiCGSTAB

Bernd Flemisch bernd at iws.uni-stuttgart.de
Thu Jun 9 19:06:30 CEST 2011


Dear all,

sorry, Markus, I misread your first answer and saw "b" 
instead of "x."

Yes, it is fair to assume that one is clever enough to 
insert known values in the initial guess. I am just 
surprised that the BiCGSTAB algorithm is not able to 
handle that. So I guess the lesson learned is "put your 
Dirichlet BCs in the initial guess."

Matlab claims to start with an all zero initial guess by 
default. It can return the residual norms. They look the 
same as ISTL's in the beginning and then slowly start to 
deviate. I have no idea what the reason for this can be. I 
attach the norms below.

So I looked at Octave. Octave also solves it. And the 
bicgstab routine is textbook style and GPL'd, so I attach 
it. I will try to detect differences.

Thank you again for your replies and efforts.

Kind regards
Bernd

Matlab:
     547.722557505166e+003
     70.6686272173148e+003
     16.0919594944600e+003
     13.6905293585520e+000
     7.97989495493456e+000
     7.96042781743378e+000
     6.27748702554648e+000
     6.13752800810622e+000
     4.38501049646480e+000
     4.34518363816910e+000
     3.86625793790769e+000
     3.25040879545531e+000
     2.87194723734970e+000
     2.99085129702484e+000
     2.31632828961268e+000
     1.97561111997182e+000
     1.74999000800660e+000
     1.67753388249665e+000
     339.915287594688e-003
     105.666640663521e-003
     87.0123511764460e-003
     377.111960192396e-003
     113.631126810502e-003
     87.1530655241023e-003
     20.8750454417466e-003
     12.9096724926136e-003
     5.72985162518586e-003
     4.39704303378432e-003
     1.65452338886661e-003
     1.32933748983879e-003
     1.05134740698569e-003
     983.690065855372e-006
     730.930761387681e-006
     559.097067469436e-006
     481.176318592935e-006
     2.11860499559708e-003
     292.479733029574e-006
     334.437457236489e-006
     197.114212603315e-006
     177.406543554174e-006
     147.862682181941e-006


ISTL:
  Iter          Defect            Rate
     0           547723
   0.5          70668.6         0.129023
     1            16092          0.22771
   1.5          13.6905      0.000850768
     2          7.97989         0.582877
   2.5           7.9812          1.00016
     3          6.28596         0.787596
   3.5          6.10793         0.971679
     4          4.38601         0.718085
   4.5          4.08159         0.930592
     5          3.29403         0.807045
   5.5          2.75974         0.837801
     6          2.55524         0.925898
   6.5          3.29023          1.28764
     7          1.67157         0.508041
   7.5          1.67186          1.00017
     8         0.436379         0.261014
   8.5         0.176398         0.404231
     9         0.112041         0.635158
   9.5         0.227358          2.02924
    10        0.0535411         0.235493
  10.5        0.0378322         0.706601
    11        0.0126924         0.335492
  11.5       0.00882755         0.695499
    12       0.00671734         0.760951
  12.5       0.00856232          1.27466
    13       0.00698652         0.815961
  13.5       0.00436435         0.624682
    14       0.00386916         0.886537
  14.5       0.00348031           0.8995
    15        0.0021925         0.629972
  15.5        0.0222249          10.1368
    16        0.0013511        0.0607922
  16.5       0.00116566         0.862745
    17      0.000935422         0.802485
  17.5      0.000591171         0.631983
    18      0.000375963         0.635964
  18.5      0.000333767         0.887764
    19      0.000286355         0.857951
  19.5      0.000169482         0.591859
    20      0.000139933         0.825651
  20.5      0.000125247         0.895053
    21      0.000104286         0.832641
  21.5      9.08415e-05          0.87108
    22      8.19629e-05         0.902263
Dune reported error: ISTLError 
[apply:../../../dune/istl/solvers.hh:791]: h=0 in BiCGSTAB






On Thu, 9 Jun 2011 14:58:10 +0200
  Andreas Lauser <andreas.lauser at iws.uni-stuttgart.de> 
wrote:
> Hi All,
> 
> I might be wrong (In this case I appologize for the 
>noise), but I always 
> thought that BiCG(Stab) reduces to CG in the symmetric 
>positive definite case. 
> If this is true, then the breakdown of BiCGStab but not 
>CG indicates a problem 
> with the ISTL implementation of BiCGStab, right?
> 
> cheers
>  Andreas
> 
> Am Donnerstag, 9. Juni 2011, 14:44:52 schrieb Markus 
>Blatt:
>> Hi,
>> 
>> maybe my initial answer was not clear enough.
>> 
>> On Thu, Jun 09, 2011 at 02:14:05PM +0200, Bernd Flemisch 
>>wrote:
>> > thank you for your answer. Although you apparently 
>>think that my
>> > answer is not interesting since you already closed 
>>this task, I
>> > provide it here anyway.
>> 
>> I closed it because with my suggested initial guess it 
>>works!
>> 
>> > This matrix and right hand side are coming from a to 
>>my knowledge
>> > correct CVFE discretization of a simple diffusion 
>>equation on the
>> > unit square discretized with 8x4 rectangular elements. 
>>Dirichlet BCs
>> > on top and bottom, Neumann zero left and right. The 
>>solution of the
>> > equation system is the physically correct one, meaning 
>>constant in x
>> > and linear in y direction.
>> > 
>> > You are somehow right about suggesting a different 
>>right hand side.
>> > The unusual form is coming from the fact that our 
>>Dirichlet BCs are
>> > implemented a bit differently leading to 1's and 2's 
>>on the
>> > diagonals in the original example. I changed that in 
>>the newly
>> > attached example with only 1's on the Dirichlet 
>>diagonals and your
>> > suggested rhs. BiCGSTAB still fails.
>> 
>> Actually I suggested to change the initial guess by 
>>incorporating the
>> already known Dirichlet values into it. This seems fair. 
>>(I changed x
>> and not b and used your original matrix!) This approach 
>>worked for me
>> and somehow makes sense, doesn't it?
>> 
>> > Matlab's bicgstab works.
>> 
>> Using the same linear system, right hand side, initial 
>>guess and
>> preconditioner? (Or are the Dirichlet Boundaries not 
>>represented as
>> dofs?) Then they maybe use same look ahead techniques to
>> prevent the breakdown. As I do not have Matlab I can 
>>only guess this.
>> 
>> Of course incorporating  such techniques would be nice 
>>for ISTL, too?
>> Maybe filing another feature request is a good idea.
>> 
>> 
>> Cheers,
>> 
>> Markus
> 
> 
> 
> -- 
> Andreas Lauser
> Lehrstuhl für Hydromechanik und Hydrosystemmodellierung
> Universität Stuttgart - Institut für Wasserbau
> Pfaffenwaldring 61
> D-70569 Stuttgart
> Tel: (+49) 0711/ 685-64719
>Fax: (+49) 0711/ 685-60430
> e-mail: andreas.lauser at iws.uni-stuttgart.de
> 
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune

___________________________________________________________

Bernd Flemisch                     phone: +49 711 685 
69162
IWS, Universitaet Stuttgart          fax: +49 711 685 
67020
Pfaffenwaldring 61        email: 
bernd at iws.uni-stuttgart.de
D-70569 Stuttgart        url: 
www.hydrosys.uni-stuttgart.de
___________________________________________________________
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bicgstab.m
Type: text/x-objcsrc
Size: 5748 bytes
Desc: not available
URL: <https://lists.dune-project.org/pipermail/dune/attachments/20110609/c89e6e89/attachment.bin>


More information about the Dune mailing list