Skip to content

Allow to read data from interpolant in time #1174

@BenjaminRodenberg

Description

@BenjaminRodenberg

Please describe the problem you are trying to solve.

In #133 the idea of waveform relaxation is drafted. By providing an interpolant instead of a single sample per window higher-order time stepping and more accurate subcycling becomes possible. This issue describes a substep of this major feature: the implementation of the read direction.

preCICE allows to store one sample of data per time window. This sample is currently overridden in every (Quasi-Newton) iteration by the updated sample. If a window is finished an one moves on to the next window, the last sample is used as an initial guess (if no extrapolation is used).

To support waveform relaxation, preCICE has to create an interpolant and update it based on the provided data in each iteration. As a first step, we want to create a simple linear interpolant from the data at the beginning and end of the time window. Higher order interpolation is generally possible, but out of scope for this issue.

Describe the solution you propose.

In order to design this feature in a non-breaking way, the following steps have to be performed:

  • Add an additional (optional!) argument for the API functions readBlockScalarData(...) etc. This argument allows the user to specify where the interpolant has to be sampled.
  • Extend the configuration file with options to specify interpolation order.
  • Find a consistent treatment for initializeData. Also for serial coupling both participants should be able to use initialize=on.
  • Find a consistent treatment for guards using precice.isReadDataAvailable(), if this feature is enabled.
  • Use experimental tag.

Some important restrictions:

  • Only consider implicit coupling, because explicit coupling would require extrapolation.
  • Only allow first and zeroth order interpolation, because higher order interpolation requires additional samples (either from past windows or more data in the current window)

Additional context

A large part of the work required for this issue is already implemented in #1029.
#1171 is to some degree a "sibling" of this issue. #133 is the parent of this issue.
Please refer to https://github.com/precice/precice/projects/7 for more related issues.
precice/precice.github.io#109 already provides preliminary documentation for this feature.

Metadata

Metadata

Labels

enhancementA new feature, a new functionality of preCICE (from user perspective)

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions