Interpolation matrix of the RBF mapping is not invertable

Hi everyone,

setting up my structure and my fluid solver, I am getting the following error:

Advancing in time
---[precice]  Compute write mapping from mesh "Fluid_Nodes" to mesh "Structure_Nodes".
---[precice] ERROR:  The interpolation matrix of the RBF mapping from mesh Fluid_Nodes to mesh Structure_Nodes is not invertable. This means that the mapping problem is not well-posed. Please check if your coupling meshes are correct. Maybe you need to fix axis-aligned mapping setups by marking perpendicular axes as dead?

To find the problem, I’ve set the mesh for both solvers to:

[[0. 0. 0.]
 [1. 1. 1.]
 [2. 2. 2.]]

Still I am getting the same error. I do not understand, why such an error can occur, when setting the both meshes to the same value.

Edit: If I have identical meshes, do I have to set x, y & z as dead axis?

Hi Julian,

This error message has nothing to do with identical meshes. An RBF interpolant needs to be created on one side (“from” for a consistent mapping, “to” for a conservative mapping") and is then sampled on the other side. Meaning, the “other side” has no influence on the computation of the interpolant.

Often this error message means that the information provided through the meshes is not enough to compute the interpolant. For example if you have a 3D mesh that solely lies in the x-y plane. Then, the RBF mapping does not know how to build up an interpolant in z direction. In this case, you can tell preCICE to completely ignore the z axis and reduce the problem to a 2D mapping by marking the z axis dead.
Understandable?

I don’t understand your example mesh definition. If your question is not answered yet, could you please give more information?

Btw, if you have matching meshes, don’t use an RBF, but simply a nearest-neighbor mapping.

Benjamin

Hi Benjamin,

thanks for your reply!
I don’t know, how I could ignore a axis in the given mesh example above.
However, using nearest-neighbor mapping, I could get the case to run.

Julian

Great!

But let’s try to solve this issue as well

I don’t know, how I could ignore a axis in the given mesh example above.

After looking again I guess I get your mesh example now. You really only have three vertices? I thought first this is some Cartesian mesh construction or similar :see_no_evil:

Problem here is probably that the mesh is 1D, so computing a 3D RBF interpolant is ill-conditioned / ill-defined. At the same time, the mesh is not axis-aligned, so setting axis to dead does not help. This is really a sweet spot where the RBF mapping in preCICE does currently not work.

If you had …

[[0. 0. 0.]
 [1. 0. 0.]
 [2. 0. 0.]]

you could set y and z to dead.

Thanks,

I was just taking the solverdummy to generate my vertices and did not understand RBF correctly …

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