**acceleration#

Description#

This keyword enables the reuse of search space across Newton steps and/or iterations. It may save computational time for evolutionary problem.

Note

This command is only available within dd_feti and dd_mpfeti solvers contexts. Available acceleration depends on the linear_solver and the iterative_solver. For the moment, it is only available for symmetric positive definite solver (CG and multipreconditioned CG).

Syntax#

The acceleration command has the following syntax:

**acceleration type

where type may have different value depending on the type of iterative solver used.

  • CG solver (within ***iterative_solver ddcg context)

    trks

    is a Total Reuse of Krylov Search Space algorithm;

    srks

    is a Selective reuse of Krylov Search Space algorithm

  • MPCG solver (whithin ***iterative_solver dd_mpcg, dd_mpcg_adaptive_local, dd_mpcg_adaptive_local context)

    trks

    is a Total Reuse of Krylov Search Space algorithm;

    geneo

    is a Geneo Ritz algorithm

All subsequent commands are optional and default values are automatically set, which may be different depending on the iterative solver used.

The following keywords are common to all acceleration algorithms.

[ *max_size max_size ] [ *queue_treatment treatment ] [ *threshold eps ] [ *validity validity ] [ *verbose ]

*max_size sz

where sz is a integer defining the maximum dimension of the reused search space. Default value is \(100\).

*queue_treatment treatment

defines how the reused search space is updated when no free space is available. For the moment two values are possible. The first one is fifo meaning fist-in-first-out. The second one is last_only meaning that the search directions are only reused for the next linear solve. Default value is fifo.

*threshold eps
, where eps is a float that drives the

selection process (if any). Default value depends on the type of algorithm.

*validity validity

defines how long a search direction can be reused. For the moment three values are possible. The first one, previous_iter means that only search directions provided by the previous resolution (in the same Newton time step) may be reused. The second one, all_iter means that all search directions provided in the same in the same Newton time step may be reused. The third one, all_incr means that there is no explicit limitation. The default value is previous_iter.

*verbose

enables optional output.

The following keyword is specific to srks.

[ *criterion type ]

*criterion

specifies how the search direction are selected. The two possibilities are stagnation and largest. Both algorithm works on the Ritz values of the Hessemberg matrix. The choice largest triggers the selection of vectors associated with Ritz eigen values greater than the threshold (in that case, the default threshold is \(10^3\)). With stagnation, only vectors associated with converged Ritz Eigen values are selected (in that case the default threshold is \(10^{-10}\).

The following keyword is specific to geneo. The Geneo Ritz algorithm is based on the solution of local Generalized Eigen values problems in parallel. With this method, each subdomains provides search directions. More information can be found in the paper of Michael Leistner et al. 2018.

[ *contraction type ] [ *threshold_correction type ] [ *sort_eigen_values ] [ *weighted_sort ]

*contraction

specifies the search space is compressed before selection. The first possibility is simple, it is a simple summation.

The second one is optimal which add a weights based on the coefficient in the MPCG algorithm.

*threshold_correction

enables a correction of the threshold for the selection. Basically it divided the threshold by the number of neighbors of the current subdomain.

sort_eigen_values

enables a sort of the eigen values to select the most useful search directions.

weighted_sort

enables weights for the sort.