No deformation when using RBFMeshMotionSolver

Hi, I have questions about using the RBFMeshMotionSolver. I’m using pimpleFoam. I’ve read quite a few discussions on using the RBFMeshMotionSolver from solid4Foam with pimpleFoam.
I am interested to use RBFMeshMotionSolver to replace the laplacian solver for prescribed mesh deformation in OF with 6DOF simulation.
I tried to start off with the from Displacement reading: Allow mesh motion solvers without a pointDisplacement field by solids4foam · Pull Request #241 · precice/openfoam-adapter · GitHub.
I have installed preCICE and solid4Foam.
I ran it and it completes with no error. However, when I view the case in paraview, the flap is stationary, there is no motion or deformation. Is this supposed to be so?

Next I tried to replace the laplacian withe rbf in a modified OF wingMotion tutorial. I prescribed a rotation to the airfoil. It completes without error but at the start, it seems to hang and it’s doing some initial calculation. When I view the results, similarly there’s no motion or mesh deformation.

I have attached the dynamicMeshDict and pointdisplacement. Did I do something wrong?

pointDisplacement.txt (1.9 KB)

dynamicMeshDict.txt (1.9 KB)

Maybe @Claudio or @philip have some idea here (I don’t have any experience with the rbfMeshMotionSolver so far).

Hi @quarkz and @Makis
it happened to me too to see no deformation. Finally I had to recompile RBFMeshMotionSolver with precice 3, to make it work again. Unfortunately I wasn’t able to catch what was going wrong. I’ll have a look at your config files very soon and see if there are some problems. In the meantime, which version of OF and precice are you using?

1 Like

Hi @Claudi, I’m using the latest preCICE (3.1.1) with openfoam 2312.

Do you mean that I should try preCICE 3.0?

Thanks for the help.

no, I don’t think that the preCICE version matters. What I have done is to compile RBFMeshMotionSolver by itself (i.e. not with all S4F) against the current OpenFOAM version. and used it with preCICE. If this can help you, this simple case works for me with preCICE 3 and OpenFOAM 2312: (22.4 KB)

Hi @Claudio , I tried to run the code but it hangs at:

Starting time loop

---[preciceAdapter] Loaded the OpenFOAM-preCICE adapter - v1.3.0.
---[preciceAdapter] Reading preciceDict...
---[precice]  This is preCICE version 3.1.1
---[precice]  Revision info: no-info [git failed to run]
---[precice]  Build type: Release (without debug log)
---[precice]  Configuring preCICE with configuration "../precice-config.xml"
---[precice]  I am participant "Fluid"
---[precice]  Setting up primary communication to coupling partner/s

May I supposed to run the solid-calculix folder too?

However, since I don’t have calculix, it gives an error:

(base) user:solid-calculix$ ./
./ 14: ccx_preCICE: not found

Is it possible to configure it not to use calculix as I require a prescribed deformation.

I tried to remove the preCICE_Adapter in controlDict and it ran, but w/o deformation.

Hi @quarkz
at first sight it looks like your system is not able to find ccx_preCICE. Before removing anything from the case:

  • you shoud install calculix and preCICE adapter. See for example here
  • you shoud have ccx_preCICE now and it must be in your path (e.g. somewhere in .bashrc you should point to it )
  • you should run fluid and solid from two different terminals and within the directory where you find

I hope this helps

1 Like

Hi @Claudio, I have installed calculix and re-tested the case. It’s working perfectly. However, I guess u may have misunderstood my qn. I ran another case with solid4Foam and it’s also working. But I don’t need FSI for the moment. I just want to deform the grid using RBF in a prescribed way. Is there an example of how it can be done?


Hi @quarkz, good to hear that. Unfortunately I don’t have anything ready to share at the moment. Why don’t you use the rigid_body_solver from the quickstart? You may configure it so that you impose the fluid mesh deformation from the “solid” (one way coupling or something like that, if this is your goal).
Btw I am planning to do something like this in the near future, because I am interested in assessing RBFMeshMotionsolver as I am not able to make it work with large meshes. If you are interested we might stay in touch.

Hi @Claudio Thanks for the update. Ya, I’ll give it a try. Btw, you mention that RBF doesn’t work with large meshes. May I know what’s the size? Do stay in touch.

It doesn’t work in the sense that it tends to eat a lot of memory. In my case, with a medium workstation, 1M cells might be way too much to handle.

Hi @Claudio , 1M cells in 3D is quite small. Maybe if I run it on a cluster with much more memory, then it can work with larger cells.

Hi @quarkz indeed it is not very big. It happened to me to run fast into “std::bad_alloc” when initializing. I know that there are ways to reduce memory usage. For example you could use coarsening, but I was not able to find configurations using it effectively, also because I miss some information regarding many parameters of RBF. Please let me know if you find interesting configurations.

HI, I followed these steps and the bin folder was created but there was no ccx_preCICE file in it, infact, it was the only file that was missing
I also get the same error as quarkz

did you compile CalculiX with preCICE or did you install the binaries, as suggested in the link above?

I installed Calculix from the preCICE website, after making sure all the dependencies given by

sudo apt install libarpack2-dev libspooles-dev libyaml-cpp-dev

were also installed first.
Then I made calculix by running make -j 4 in src and proceeded to download the adapter from the site, I have made a new post about it as well, detailing the problem

Edit: Calculix adapter error v2.20

Hi, I also tried with Calculix v 2.19 and the same thing happens, when I make the adapter, ccx_preCICE doesn’t form for some reason

Note that the first version of the CalculiX adapter to work with preCICE v3 is v2.20.1:

If you install preCICE v3 but a previous release of the CalculiX adapter, building will fail due to undefined functions.