Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect combination of implicit and explicit schemes #2022

Open
fsimonis opened this issue May 14, 2024 · 0 comments
Open

Incorrect combination of implicit and explicit schemes #2022

fsimonis opened this issue May 14, 2024 · 0 comments
Assignees
Labels
bug preCICE does not behave the way we want and we should look into it (and fix it if possible) hotfix requires hotfix
Milestone

Comments

@fsimonis
Copy link
Member

fsimonis commented May 14, 2024

Describe your setup

preCICE Version: 3.0.0 (since #1453)

Describe the problem

The current method of handling compositional coupling schemes with implicit coupling schemes is the following:

  1. run all explicit schemes
  2. run the implicit scheme

Then rerun the implicit schemes until it achieves convergence and move to the next time-window.

The implicit scheme defines a fixed-point problem on the interface, which is accelerated using the configured acceleration schemes.
This problem changes every time window, until the implicit scheme reaches convergence.

As explicit schemes run during the first iteration along the implicit scheme, they also exchange data.
Even if the exchanged data via the explicit scheme is not used in the implicit scheme, it may change available readData of the solver and thus changes the fixed-point problem.
Hence, the fixed-point problem of the first iteration is different than following iterations.
This numerically doesn't make sense.

Furthermore, a serial explicit scheme where the participant with the implicit scheme runs first sends the data of the first iteration to the coupling partner. This data should really be the data of the converged iteration.

Expected behaviour

The implicit coupling scheme should run until convergence is achieved without any interference from explicit schemes. Only when the implicit scheme converges, should the explicit schemes run.

For serial schemes, where the participant with the implicit scheme

  • comes first: the data of the converged iteration should be sent to the coupling partner.
  • comes second: the data of the coupling partner should be received before the implicit scheme starts iterating.

Example

A-B parallel-implicit; A-C serial-explicit

Top is our currently incorrect method. Bottom is the expected way of handling this.

image

Additional context
This means that splitting the former CouplingScheme::advance() into substeps is more complex as assumed.
This makes remeshing for serial coupling significantly more difficult to implement, while remeshing for parallel participants should be largely unaffected.

@fsimonis fsimonis added bug preCICE does not behave the way we want and we should look into it (and fix it if possible) hotfix requires hotfix labels May 14, 2024
@fsimonis fsimonis added this to the Version 3.x.x milestone May 14, 2024
@fsimonis fsimonis self-assigned this May 14, 2024
@fsimonis fsimonis mentioned this issue May 15, 2024
64 tasks
@fsimonis fsimonis modified the milestones: Version 3.x.x, Version 3.1.2 May 22, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug preCICE does not behave the way we want and we should look into it (and fix it if possible) hotfix requires hotfix
Projects
None yet
Development

No branches or pull requests

1 participant