-
Notifications
You must be signed in to change notification settings - Fork 273
[MappingApplication] Creation of a Radial Basis Function Mapper for IBRA and FEM #13917
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
base: master
Are you sure you want to change the base?
Conversation
…nts to control points
philbucher
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
for now I did only a brief review.
What confuses me most is that you are never solving a linear system, which to my understanding is required for the rbfs, how else would you compute the coefficients?
Thats one of the main reasons I never implemented it myself
applications/MappingApplication/custom_mappers/radial_basis_function_mapper.cpp
Outdated
Show resolved
Hide resolved
applications/MappingApplication/custom_mappers/radial_basis_function_mapper.cpp
Outdated
Show resolved
Hide resolved
| template<class TSparseSpace, class TDenseSpace> | ||
| IndexType RadialBasisFunctionMapper<TSparseSpace, TDenseSpace>::CalculateNumberOfPolynomialTermsFromDegree( | ||
| IndexType PolyDegree, | ||
| bool ProjectToAerodynamicPanels) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
mapping is physics-agnosic, pls change the naming
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed 👍
applications/MappingApplication/custom_mappers/radial_basis_function_mapper.cpp
Outdated
Show resolved
Hide resolved
applications/MappingApplication/custom_mappers/radial_basis_function_mapper.h
Outdated
Show resolved
Hide resolved
|
Hi @philbucher, I will try to clarify your point regarding the solution of the linear system involved by the RBF mapper. This mapper uses Radial Basis Functions (RBFs) to build a linear mapping between origin and destination nodes.
So the heavy part (the inversion) happens only once during setup, and applying the mapping later is just a fast matrix–vector multiplication. Of course, there are other mapping techniques that can be less computationally expensive. However, it’s still valuable to have this RBF mapper available in Kratos as it’s a standard approach widely used in low-fidelity aeroelastic coupling frameworks in the industry (for example, in Airbus). The RBF system can’t be solved ahead of time because it would require knowing the origin displacements, which are only available during the simulation. Instead, we precompute a linear mapping matrix using just the origin and destination geometries. At each time step, the mapping is applied with a simple matrix–vector multiplication, avoiding the need to solve a system repeatedly. It's worth commenting that usually in low-fidelity aeroelastic frameworks, the size of this matrix to be inverted is not so big, bacause the loads are not applied in every node of the structure but just in some specific stiff nodes. |
|
thanks for the explanation
Oh boy 😅 for tiny systems it might work, but it will blow up very soon. I will write a longer reply with my thoughts later |
I know this is non optimal, but I really doubt someone would use this mapper for a large-scale simulation... if you have a better solution for this, I will be very happy to hear, and I still think this mapper is a good addition to the |
|
After reviewing this and giving it some thought I see two ways forward:
Up to you, let me know :) BTW the RBF mapper is default in precice, where they use it for huuuuge examples. |
Thank you for the detailed feedback @philbucher! I agree that the second approach is the cleaner and more robust solution, especially considering MPI support and performance for large problems. So far, the only benchmarking I’ve done was with the FSI Mok and Turek examples. They’re good for testing but relatively small, so I haven’t fully assessed performance for larger cases yet. It would be great to have your guidance and help for implementing this properly. What do you think? |
|
sounds good! So there are a few things:
That should be it ... In the meantime can you make a separate PR for the changes in the RBF utility? |
|
this MR is outdated and is not planned to be merged, right? |
Hi @philbucher. Yes, this PR is only a draft and thus is not planned to be merged. The one to be merged is the following PR #13981. |
This PR extends the
MappingApplicationto support Radial Basis Function (RBF) mapping, enabling flexible, mesh-independent transfer of scalar and vector fields between non-matching geometries.Overview
Tests
Multivariate interpolation for fluid-structure-interaction problems using RBF.pdf