Skip to content
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

Compact radial basis functions and generic polynomial basis / Utility for moving least squares #954

Merged
merged 9 commits into from
Oct 12, 2023

Conversation

mrlag31
Copy link
Contributor

@mrlag31 mrlag31 commented Sep 27, 2023

Follow-up of #946 and #950. This PR adds the set of radial basis functions that were present on DTK, a generic way of building a polynomial basis and tests for both of them.

  • Adds ArborX::Interpolation::CRBF, a namespace containing the compact radial basis functions Wendland, Wu and Buhmann.

@mrlag31 mrlag31 changed the title Compacr radial basis functions and generic polynomial basis / Utility for moving least squares Compact radial basis functions and generic polynomial basis / Utility for moving least squares Sep 27, 2023
@aprokop aprokop added the enhancement New feature or request label Sep 27, 2023
Comment on lines 142 to 149
template <std::size_t Deg>
struct PolynomialDegree : std::integral_constant<std::size_t, Deg>
{};

} // namespace Details
template <std::size_t Deg>
static constexpr Details::PolynomialDegree<Deg> PolynomialDegree{};

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

What is this used for?

Suggested change
template <std::size_t Deg>
struct PolynomialDegree : std::integral_constant<std::size_t, Deg>
{};
} // namespace Details
template <std::size_t Deg>
static constexpr Details::PolynomialDegree<Deg> PolynomialDegree{};

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is used as a tag so that it can be used as a function argument and help with templates. For example: MovingLeastSquares<MemorySpace, double>(source, target, CRBF::Wendland<2>, PolynomialDegree<2>)

Copy link
Collaborator

@masterleinad masterleinad left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks OK to me.

@mrlag31
Copy link
Contributor Author

mrlag31 commented Oct 10, 2023

SYCL and HIP did not run due to the 3h timeout. Others are fine.

#include <interpolation/details/ArborX_InterpDetailsCompactRadialBasisFunction.hpp>

#include "BoostTest_CUDA_clang_workarounds.hpp"
#include <boost/math/tools/polynomial.hpp>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This introduces a new dependency on boost::math, I think. According to this, it only has optional compiled binary, but can be used header only. So I think we don't need to update CMake's boost REQUIRED_COMPONENTS.

@aprokop aprokop merged commit 57f7884 into arborx:master Oct 12, 2023
1 of 2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants