Hi, dealii devs and users

I have been using the dealii Trilinos API of ML to generate an AMG
preconditioner for MPI distributed sparse system matrix quite a while. It
roubustely works for most computing of a damped Newton method on clusters.

However, casually the linear solver of Newton update vector gives extremely
incorrect update vector, which leads to divergence of iteration. Here is an
example shown as log file record for a line search:
```shell
Refinement cycle : 0, iteration_loop: 1
Volume is 1.568e+06

 assembly is done !
 start to build AMG preconditioner.
 AMG preconditioner is built up.
 system_rhs.l2_norm() is 307.629
 Starting linear solving.
   Solved in 8 iterations.
 AMG preconditioned solving is done ! With solver_tol 0.7
 step length alpha is: 1, residual is: 1.08098e+57, previous_residual is:
307.629
...
 step length alpha is: 9.74386e-09, residual is: 1.00003e+33,
previous_residual is: 307.629
```
As the last two lines show, the iteration Vn+1 = Vn + alpha Xn went into
total failure because Xn, which is solved by FGMRES + Trilinos AMG, is no
where close to the right guess. This failure usually is triggered during
simulation with a bigger box (100^3 in volume and > 30M DoFs) and
relatively small solver_tol of FGMRES (example above is 0.7). The initial
configuration on which Xn is solved has random noise on every vertice. This
failure happens for Trilinos v12.8, v14.2, v14.4 and dealii 9.3, 9.4, 9.5,
9.6.

This issue won't happen if simulation is done with either
(1) smaller box (about < 70^3 in volume)  or
(2) looser tolerance of linear solver FGERES ( solver_tol> 0.9) even with
small number of DoFs (~ 5M)

I want to know if there are "always-working" rules to guarantee successful
linear iteration when Trilinos AMG + FGemRES are used or any tips about
using AMG preconditioner. The following is the preconditioner initializing
block in my code:
```shell
TrilinosWrappers::PreconditionAMG::AdditionalData additional_data;
additional_data.constant_modes = constant_modes;
additional_data.elliptic = true;
additional_data.n_cycles = 4;
additional_data.w_cycle = true;
additional_data.smoother_sweeps = 2;
additional_data.aggregation_threshold = 1e-2;
preconditioner.initialize(system_matrix, additional_data);
```

best,
Tim

-- 
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- 
You received this message because you are subscribed to the Google Groups 
"deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to dealii+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/dealii/CAArwj0FAVgSmUk9GHf1KDZRfsZCVWp3YgnJhtPb51asMz2QJWA%40mail.gmail.com.

Reply via email to