Hi all,
I am having convergence issues at the first iteration of a FSI simulation. I am writing a structural solver adapter and I am trying to couple it with openFOAM.
I am performing a serial-implicit coupling
with Fluid
first and Solid
second solver.
The convergence on displacements
is set on relative convergence measure
.
Looking at the convergence, at each iteration the first time step, I get:
relative two-norm diff = 1
and of course it never converges.
While I am analyzing the code on the structural side, I’d like to be sure that the structure and the sequence of operations in the adapter are correct (I basically followed dummySolver.cpp). My code looks like this:
while (interface->isCouplingOngoing()){
if(interface->isActionRequired(actionWriteIterationCheckpoint())){
interface->markActionFulfilled(actionWriteIterationCheckpoint());
}
// read forces from interface
if (interface->isReadDataAvailable()) {
interface->readBlockVectorData(forceID,
vertexSize,
vertexIDs,
adapterForces);
}
// Send forces to solver
computeForces(adapterForces,coeff);
// Solver compute motion step
solve();
// retrieve displacements from solver
getConnDisplacements(adapterDisplacements);
// send displacewments to interface
if(interface->isWriteDataRequired(precice_dt)){
interface->writeBlockVectorData(displID,
vertexSize,
vertexIDs,
adapterDisplacements);
}
// advance
precice_dt = interface->advance(precice_dt);
if(interface->isActionRequired(actionReadIterationCheckpoint())){
interface->markActionFulfilled(actionReadIterationCheckpoint());
// tell solver that timestep didn't converge
putForces(false);
}else{
// tell solver that timestep converged
putForces(true);
}
}
I am also writing the values (Forces and Displacements) at the interface by using export:vtk
in the precice-config file at each iteration. Basically the forces keep being constant, while displacements seem to oscillate between two sets of values (nevertheless being extremely small). The fact that the two-norm diff is always 1 makes me think that one set of displacements is zero at the numerator, but I don’t see where. The mesh can be found here:
Any suggestion is much appreciated
Thank you
Claudio