# Basic understanding of checkpointing with implicit coupling scheme

**URL:** <https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391>\
**Category:** Using preCICE\
**Tags:** implicit, checkpointing\
**Created:** [March 26, 2025, 8:23am UTC](https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391 "2025-03-26T08:23:09Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![MaxivL](https://avatars.discourse-cdn.com/v4/letter/m/0ea827/32.png) [@MaxivL](https://precice.discourse.group/u/MaxivL)\
**Post date:** [March 26, 2025, 8:23am UTC](https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391/1 "2025-03-26T08:23:09Z")

</div>

I‘m currently trying to implement an implicit coupling scheme and want to understand the checkpointing procedure of preCICE to verify my subiteration-output of my fluid und solid solver.  
I‘m using a parallel implicit scheme (Vec-FPE) with Aitken Underrelaxation/IQN-ILS.  
In my understanding in the first subiteration the state of my solver is saved. The coupling data (e.g. displacement) is read, then solveTimeStep and write coupling data (e.g. force) is processed. In advance the convergence measure of forces is computed and the Underrelaxation/IQN-ILS is used for force. This force is then used for the next subiteration step as part of the FPE.  
So my question is: Why is there the need to reload the oldState of the solver of subiterarion1 for every not converged subiteration in a time window? In my understanding not the oldState but the current/underrelaxated state must be used for the next subiteration.

---

<div class="post-metadata">

**Author:** ![fsimonis](https://yyz2.discourse-cdn.com/free1/user_avatar/precice.discourse.group/fsimonis/32/6_2.png) [@fsimonis](https://precice.discourse.group/u/fsimonis)\
**Post date:** [March 27, 2025, 4:30pm UTC](https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391/2 "2025-03-27T16:30:28Z")

</div>

> [@MaxivL](#):
>
> Why is there the need to reload the oldState of the solver of subiterarion1 for every not converged subiteration in a time window? In my understanding not the oldState but the current/underrelaxated state must be used for the next subiteration.

I assume that the explanation in the docs is not sufficient

> **[Step 6 – Implicit coupling](https://precice.org/couple-your-code-implicit-coupling.html)**
>
> In previous steps, we only considered explicit coupling. We now move onto implicit coupling, so sub-iterating each time step multiple times until a convergence threshold is reached. This stabilizes strongly-coupled problems.

The implicit coupling scheme tries to solve a fixed-point problem f(x)=x, where f represents your solvers and x represents your forces and displacements. preCICE uses the result of the previous time window or initial data as x\_0.

After your solvers complete the first iteration, preCICE known a new x\_1 for the next iteration.  
However, your solvers have most likely updated some internal state. Therefore, you are now computing g(x)=x instead of f(x)=x.

Reading the checkpoint restores your solver to the same state as you started the time-window so that you compute f(x)=x again, but now with a new guess x\_1.

Hope that helps.

Frédéric

---

<div class="post-metadata">

**Author:** ![MaxivL](https://avatars.discourse-cdn.com/v4/letter/m/0ea827/32.png) [@MaxivL](https://precice.discourse.group/u/MaxivL)\
**Post date:** [March 31, 2025, 8:37am UTC](https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391/3 "2025-03-31T08:37:12Z")

</div>

Thank you! This explanation resolves my misunderstanding of the checkpointing to solve the fixed-point problem.

---

<div class="post-metadata">

**Author:** ![system](https://global.discourse-cdn.com/free1/uploads/precice/original/1X/67d2a5fa6f80e597e2267ff17fa8c1673cd11caa.svg) [@system](https://precice.discourse.group/u/system)\
**Post date:** [April 3, 2025, 8:37am UTC](https://precice.discourse.group/t/basic-understanding-of-checkpointing-with-implicit-coupling-scheme/2391/4 "2025-04-03T08:37:57Z")

</div>

Closed on April 3, 2025, 8:37am UTC

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.
