Skip to content

scalable Pade extrapolation #3217

@stevengj

Description

@stevengj

It would be nice to have a more scalable version of Padé extrapolation (ala #2440) that (a) parallelizes and (b) requires bounded storage independent of the number of time steps.

(a) seems to require implementation at the C++ level so that the computations and storage can be done per-chunk (like DFT accumulation).

For (b), one idea is (for each DFT point/component), we continue to accumulate the DFT as now, and additionally store the last $n$ timesteps for some $n$ (e.g. $n=20$). Then we compute the DFT as (accumulated DFT) + (Padé extrapolation from $n$ points). This could hopefully be very effective because the "tail" of the time series is typically dominated by a small set of resonances, so only a low-order Padé extrapolation (requiring only a few points) should suffice.

Furthermore, this would give us error measures that we could use to estimate the DFT convergence: the Padé extrapolation itself is an error measure on the accumulated DFT, and we could also use the difference between Padé extrapolation from $n$ points and from $n/2$ points as an error estimate on the extrapolant.

This could be integrated with the existing dft_fields objects, with the default being $n=0$ (no extrapolation, i.e. current behavior), so that all existing DFT functions (flux, stress, eigenmode coefficients, adjoints, …) get the option of an extrapolated correction.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions