Support Radius for RBF Different than Gaussian

Hi everyone,

preCICE offers different RBF mapping functions.
I’ve found the RBF shape calculator for gaussian fucntions.
As in this thesis stated, the thin-plate splines function is the most accurate one, which is why I chose the thin-plate-splines function.

Now in this paper is described how to calculate the support radius for gaussian functions.
For the thin-plate-splines, I’m not really sure how to calculate it.
I’ve found the following equation in this thesis for the thin-plate-splines:
\phi(x)=1−30r ̃^2−10 r ̃^3+45 r ̃^4−6r ̃^5−60 r ̃^3logr ̃
while r ̃ is the normalized distance from the center.

Example case:
The airfoil, which is the coupling body, has the following dimensions:
chord length: 0.144 m
maximum thickness: 0.017 m
span length: 0.15 m

see screenshot of the body

As in this thesis described, a good choice for \Phi is \Phi(x)<10^{-9}.
The normalized distance is defined as \tilde{r}=||x||/r.
Together with the equation from the previous post, I receive:
1/10^9 = 1 - 30 (x/r)^2 - 10 (x/r)^3 + 45 (x/r)^4 - 6 (x/r)^5 - 60 (x/r)^3 log(x/r)
Now my question is how to define x.
My guess would be x=numberOfVertices*meshWidth as it was calculated for the gaussian function.
For the meshWidth my question would be if this is the width of one cell or the width of the longest mesh edge.
Assuming x has the value of the cell width (x=0.015), the equation would provide the values:
r ≈ 0.0149999999995581...
r ≈ 0.00261558671215187...

When calculating:
10^{-9} = 1 - 30 (0.015/r)^2 - 10 (0.015/r)^3 + 45 (0.015/r)^4 - 6 (0.015/r)^5 - 60 (0.015/r)^3 Log10[0.015/r]

Hi @JulianSchl,

it’s correct that the definition of the shape-parameter and the support radius are inconsistent in preCICE. However, in case of the local RBF functions you define directly the support radius, which is an absolute measure. Let’s assume you have 100 vertices in your 0.144m chord length and you want to cover 10 points in the local RBFs per direction. Then you would simply choose a support radius of 0.0144m. I think you can also find some useful findings in the new reference paper regarding the mapping options and their accuracy [2109.14470] preCICE v2: A Sustainable and User-Friendly Coupling Library.

Hi @DavidSCN,

thank you for your reply!
This approach could work for e.g. a local gaussian function.
However, looking at the xml reference of the thin-plate-splines function, the default setting is polynomial="separate".
I assume, the value has to be set to polynomial="off" to apply a local basis function with a support radius calculated as you explained.

Still, for the separate and global basis functions, I wonder how the support radius is calculated. explains the separated polynomial approach, but I couldn’t find any information about a custom support radius calculation for this function type.

I’m not sure I understand what you mean. Do you want to use global RBFs or local ones? If you are looking for local RBFs you have to look here: XML reference | preCICE - The Coupling Library (other options are available as well). The configuration option rbf-thin-plate-splines uses always global RBFs, i.e. full matrices.
IIRC the separate option is actually independent of any RBF support radius. It is just a configuration option on how you solve the resulting system. When specifying separate, the polynomial part is solved separately and not within the RBF matrices. Have a look at the Dissertation of Florian chapter 3.2. in case you are interested in details. All in all, you should not really care about this configuration option, the default is just fine.

That’s perfect :slight_smile: :+1:
I was trying to use the global RBF thin-plate-splines (XML reference | preCICE - The Coupling Library) but do not understand how to calculate the support radius for global functions.
(There is a difference in calculating the support radius of local and global functions?)
As you already explained the method in determining the support radius of local RBFs,
I’m now wondering how this is done for global RBFs.

The support radius for global RBFs is essentially infinity, i.e. all data vertices couple with each other. For this reason, you also receive full mapping matrices for your mapping problem and you should only consider this option for reasonable small interfaces (of course depending on your Hardware).

Thanks a lot!
This helped me in understanding the difference between global and local basis functions :slight_smile:

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