Does precice support iterative coupling?
Yes, preCICE supports such type of iterative coupling via implicit coupling schemes: Step 6 – Implicit coupling | preCICE - The Coupling Library
As a continuation of this question, for parallel implicit, if time-interpolation is used, is it necessary to exchange data in a subcycle in addition to exchanging data in the time window？
This feature is under active development and there will be fundamental changes in the upcoming release with respect to your question. So the answer depends a lot on whether we are talking about version 2.5 (current release) or version 3 (under development) of preCICE. I’ll try to answer both cases. If you are missing something in the documentation on this topic, please let us know, because, like I already said, we are actively developing here.
If you write data, this data always goes to the end of the time window. Meaning: preCICE only knows about a single sample per time window. If you are subcycling, all data that is inside of the window and not at it’s border is discarded and not communicated to the other participant. Still, with version 2.4 we introduced basic support for time interpolation here (see also Waveform iteration for time interpolation of coupling data | preCICE - The Coupling Library).
Above I explained that data inside the window is not communicated. This will change with version 3. When you call a write data function inside of the window, preCICE knows to which point in time this data belongs to (Remember: You are telling preCICE about your time step size via
advance). preCICE then stores the write data with a time stamp pointing to the end of the current time step. This means that at the end of the time window, you might end up with data from from multiple time steps. This data is then communicated to the other participant which uses it to create a (possibly higher-order) interpolant.
Please note that version 3 is under active development and not released yet. You can already use the features I’m describing here by checking out our develop branch. Most things are already working quite well (with some restrictions), but since version 3 is not released, be aware that the API might still change. If you want to experiment here, please let me know and I can give some further hints to help you getting started.