-
Notifications
You must be signed in to change notification settings - Fork 273
[MappingApplication] Proper Implementation of a Radial Basis Function Mapper for FEM-FEM and IBRA-FEM #13981
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
…into mapping/rbf_mapper_proper_implementation
… can be used from outside the class
|
FYI @philbucher |
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.
great work, I think conceptually its very good
I had mostly implementation detail questions and remarks
| "echo_level" : 0 | ||
| "echo_level" : 0, | ||
| "required_rbf_support_points" : 0, | ||
| "use_all_rbf_support_points": true |
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.
why not define "max_support_points`?
Also, this should be settings of the RBF local system and interface info, its not even used here
| rModelPartCommunicator.SynchronizeNonHistoricalVariable(INTERFACE_EQUATION_ID); | ||
| } | ||
|
|
||
| void AssignInterfaceEquationIdsOnConditions(Communicator& rModelPartCommunicator) |
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.
Ideally you would generalize the function that works on nodes, maybe by passing a range, or iterator start and end
| /** | ||
| * @brief Assigning INTERFACE_EQUATION_IDs to the conditions, with and without MPI | ||
| * This function assigns the INTERFACE_EQUATION_IDs to the conditions, which | ||
| * act as EquationIds for the MappingMatrix in the case of IGA. This work with and without MPI, |
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.
| * act as EquationIds for the MappingMatrix in the case of IGA. This work with and without MPI, | |
| * act as EquationIds for the MappingMatrix. This work with and without MPI, |
| * act as EquationIds for the MappingMatrix in the case of IGA. This work with and without MPI, | ||
| * in MPI a ScanSum is performed with the local number of nodes | ||
| * @param rModelPartCommunicator The Modelpart-Communicator to be used | ||
| * @author Juan I. Camarotti |
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.
| * @author Juan I. Camarotti |
we dont do fct based authorship => thats what we have git for
there are also authorship rules in the wiki somewhere
| * @brief Assigning INTERFACE_EQUATION_IDs to the conditions, with and without MPI | ||
| * This function assigns the INTERFACE_EQUATION_IDs to the conditions, which | ||
| * act as EquationIds for the MappingMatrix in the case of IGA. This work with and without MPI, | ||
| * in MPI a ScanSum is performed with the local number of nodes |
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.
wrong comment
| mRBFTypeString(RBFType), | ||
| mRBFTypeEnum(ParseRBFType(RBFType)), |
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.
whats the difference? Why isnt the enum enough?
| { | ||
| // backward compatibility | ||
| if (mMapperSettings.Has("search_radius")) { | ||
| KRATOS_WARNING("Mapper") << "DEPRECATION-WARNING: \"search_radius\" should be specified under \"search_settings\"!" << std::endl; |
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.
please dont introduce deprecated stuff in new code
| } | ||
|
|
||
| if (mMapperSettings.Has("search_iterations")) { | ||
| KRATOS_WARNING("Mapper") << "DEPRECATION-WARNING: \"search_iterations\" should be specified as \"max_num_search_iterations\" under \"search_settings\"!" << std::endl; |
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.
same
| void AddInterfaceInfo(MapperInterfaceInfoPointerType pInterfaceInfo) override | ||
| { | ||
| mInterfaceInfos.clear(); | ||
| mInterfaceInfos.push_back(pInterfaceInfo); | ||
| } |
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.
can you please explain why you override?
| * @brief Returning the results of the neighbour search for the RBF mapper | ||
| * @author Juan I. Camarotti | ||
| */ | ||
| virtual const RBFSupportAccumulator& GetRBFSupportAccumulator() const |
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.
please dont add a special interface
I solved basically the same issue with static_cast, see here:
| const BarycentricInterfaceInfo& r_info = static_cast<const BarycentricInterfaceInfo&>(*mInterfaceInfos[i]); |
Its not the greatest solution either, but I think in this case its cleaner
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
Implementation Notes
precompute_mapping_matrixand recommended for repeated coupling steps and mandatory for IGA setups.InterfaceInfocreation (at the end we only have just oneInterfaceInfoperLocalSystem). EachInterfaceInfohas aRBFSupportAccumulatorwhich is the data structure in charge of accumulating the support points for each local systemTests
Multivariate interpolation for fluid-structure-interaction problems using RBF.pdf
FYI @matekelemen @sunethwarna