-
-
Notifications
You must be signed in to change notification settings - Fork 83
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
Mistake in the interpretation of DisplacementDelta #106
Comments
Ok, I like to recap what's meant here a little bit more in detail: If the time step size of the fluid solver is now smaller than the coupling time step (or time window in preCICE languagae), everything works as expected, since data is only transferred at the coupling time step and the solid solver displacement corresponds to this time window. If the solid time step is smaller than the coupling time step we have a problem, since we only obtain the difference (delta) in the displacement for a smaller solid time step on the fluid side. So, one needs to take care of this problem on the solid side, by adding all |
I agree with your point about Fluid vs Solid: we need to adapt the size of the delta on the Solid side. However, there is (I think) another problem on the Fluid side: in every subcycle (time step size < time window size), we are adding a delta to the displacement. This means that we will get completely different results with a different time step size. Could you maybe check this? |
This should not be the case: void preciceAdapter::FSI::DisplacementDelta::read(double * buffer, const unsigned int dim) as in every data field. According to the adapter design, this function must only be called after each time window. Otherwise, we would assign (reset) the obtained values in other fields (e.g. displacement absolut) after each subcycled time step as well, which makes no sense. So, this would be a bug in the design of the whole adapter. I will check it anyway.. |
This is a question for preCICE experts: // Are new data available or is the participant subcycling?
if (precice_.isReadDataAvailable()) But logically it should return false in case of subcycling, since there isn't new data. We should replace the debug message there, since data is not read in any case. Maybe this was confusing here. |
Reference for |
more discussion on this issue can be seen here. precice/calculix-adapter#23 |
Ok I don't agree here, but maybe I don't understand you correctly.
and further:
which means: During subcycling, no participant accesses any data or let preCICE read any data. To take your example again: Solid participants performs two subcycling time steps and reaches a displacement of zero to one and the fluid participant performs five subcycling time steps and receives the data. This will look like this in preCICE: This is also, what I observe in the adapter. AfaIk, time interpolation is a future project of preCICE.
The fields are reloaded at the beginning of each implicit coupling time step, which is independent of the subcycling time steps. |
Ok, interpolate was the wrong choice of word. What I meant are the post-processed values from preCICE and the values I wrote are just to explain the issue. Still, the modified example that you've written looks more like an explicit coupling where 1 solver has to wait for the other to finish. From what I've seen in implicit schemes, fluid writes forces at the end of every sub_cycle and reads DisplacementDeltas at the beginning of every sub_cycle. And the opposite for the solid. And I'm not sure about the context of the quotes from @uekerman 's thesis. @uekerman ? |
Indeed, I forgot about this.The same happens in the CalculiX adapter. Then this is actually related to #3 |
Did I actually answer your questions? |
Yes, and that means this issue can be closed. Thanks. |
Just for completeness: this is what we currently do in the OpenFOAM adapter: Line 1724 in 11db960
This is called only when Lines 285 to 295 in 11db960
|
If the definition of
DisplacementDelta
isV - V_checkpoint
, the adapter's interpretation is not correct. Adapter is interpreting the delta asV - V_sub_cycle
.openfoam-adapter/FSI/DisplacementDelta.C
Line 55 in fa19374
The text was updated successfully, but these errors were encountered: